
	                	                 
Stream API에서 lock 지원은 병렬 처리 시 데이터의 일관성을 유지하기 위해 사용됩니다. 
Stream API에서 lock을 사용하는 방법은 다음과 같습니다.
1. `parallelStream()` 메서드를 사용하여 병렬 처리를 시작합니다.
2. `synchronized` 키워드를 사용하여 lock을 획득합니다.
3. lock을 사용하여 데이터를 처리합니다.
4. lock을释放합니다.
Stream API에서 lock이 작동하는 방식은 다음과 같습니다.
1. Stream API는 병렬 처리를 시작할 때, 각 스레드가 lock을 획득합니다.
2. 각 스레드는 lock을 사용하여 데이터를 처리합니다.
3. 데이터 처리가 완료되면, 각 스레드는 lock을释放합니다.
Stream의 lock 지원이 없을 때와 있을 때의 차이는 다음과 같습니다.
- lock 지원이 없을 때: 데이터의 일관성이 유지되지 않습니다. 스레드 간의 충돌이 발생할 수 있습니다.
- lock 지원이 있을 때: 데이터의 일관성이 유지됩니다. 스레드 간의 충돌이 발생하지 않습니다.
예를 들어, Stream API를 사용하여 병렬로 처리하는 코드를 작성한 경우는 다음과 같습니다.
#hostingforum.kr
java
import java.util.stream.IntStream;
public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        
        // lock 지원이 없을 때
        IntStream.of(numbers)
                .parallel()
                .forEach(n -> {
                    // lock 획득
                    synchronized (this) {
                        // 데이터 처리
                        System.out.println(n);
                    }
                    // lock释放
                });
        
        // lock 지원이 있을 때
        IntStream.of(numbers)
                .parallel()
                .forEach(n -> {
                    // lock 획득
                    synchronized (this) {
                        // 데이터 처리
                        System.out.println(n);
                    }
                    // lock释放
                });
    }
}
위 코드에서, lock 지원이 없을 때와 있을 때의 차이를 확인할 수 있습니다.
2025-06-11 12:32