728x90
병렬 처리(Parallel Operation)란 멀티 코어 환경에서 하나의 작업을 분할해 각각의 코어가 병렬적으로 처리하는 것이다.
동시성(Concurrency)
멀티 작업을 위해 멀티 스레드가 번갈아가며 실행하는 성질이다. 싱글 코어 CPU를 이용한 멀티 작업은 병렬적으로 실행되는 것처럼 보이지만 실제로는 동시성 작업이다.
병렬성(Parallelism)
병렬성은 멀티 작업을 위해 멀티 코어를 이용해 동시에 실행하는 성질이다.
예제1)
해당 예제는 리스트에 10개의 요소를 더하고 , 1초의 대기시간을 주는 예제이다.
일반 반복문
public class SequentialProcessingExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
long startTime = System.currentTimeMillis();
int sum = 0;
for (int number : numbers) {
processElement();
sum += number;
}
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
System.out.println("Result: " + sum);
System.out.println("Execution Time: " + duration + " milliseconds");
}
private static void processElement() {
try {
Thread.sleep(1000); // 1초 동안 대기
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//결과
Result: 55
Execution Time: 약 10초
Stream 병렬처리 반복문
public class ParallelProcessingExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
long startTime = System.currentTimeMillis();
int sum = numbers.parallelStream()
.reduce(0, (subtotal, number) -> {
processElement();
return subtotal + number;
});
System.out.println("Result: " + sum);
System.out.println("Execution Time: " + duration + " milliseconds");
}
private static void processElement() {
try {
Thread.sleep(1000); // 1초 동안 대기
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//결과
Result: 55
Execution Time: 약 1초
자바는 멀티스레드를 지원하는 프로그래밍 언어로, 여러 스레드를 동시에 실행하여 작업을 병렬로 처리할 수 있다.
멀티스레딩을 통해 여러 작업을 동시에 처리하면, CPU 코어를 최대한 활용하고 작업을 분산시켜 더 빠른 실행을 달성할 수 있다.
728x90
'개-발 > Java + Spring + Kotlin' 카테고리의 다른 글
[Spring] @Constraint로 커스텀 Vaildatation 만들기 (0) | 2023.12.27 |
---|---|
[Spring] AOP 를 활용한 중복요청 방지 (따닥방지) (2) | 2023.12.19 |
[JAVA] Stream 이해 (Lazy 지연연산) (0) | 2023.06.12 |
[JAVA] TDD / Testcode (mockito) (0) | 2023.05.07 |
[JAVA] TDD / Testcode (0) | 2023.05.07 |