병렬처리 2

병렬 처리

병렬 처리(Parallel Operation)란 멀티코어 CPU 환경에서 하나의 작업을 분할해서 각각의 코어가 병력적으로 처리하는 것을 말하는데, 병렬 처리의 목적은 작업 처리 시간을 줄이기 위한 것이다 자바 8부터 요소를 병렬 처리할 수 있도록 하기 위해 병렬 스트림을 제공하기 때문에 컬렉션(배열)의 전체 요소 처리 시간을 줄여준다 동시성(Concurrency)과 병렬성(Parallelism) 멀티 스레드는 동시성(Concurrency) 또는 병렬성(Parallelism)으로 실행되기 때문에 이 용어 들에 대해 정확히 이해하는 것이 좋다. 이 둘은 멀티 스레드의 동작 방식이라는 점에서는 동일하지만 서로 다른 목적을 가지고 있다 동시성은 멀티 작업을 위해 멀티 스레드가 번갈아가며 실행하는 성질을 말하고 ..

병렬 처리를 위한 컬렉션

동기화된(synchronized) 컬렉션은 멀티 스레드 환경에서 하나의 스레드가 요소를 안전하게 처리하도록 도와주지만 전체 요소를 빠르게 처리하지는 못한다. 하나의 스레드가 요소를 처리할 때 전체 잠금이 발생하여 다른 스레드는 대기 상태가 된다. 그렇기 때문에 멀티 스레드가 병렬적으로 컬렉션의 요소들을 처리 할 수 없다. 자바는 멀티 스레드가 컬렉션의 요소를 병렬적으로 처리 할 수 있도록 특별한 컬렉션을 제공하고 있다 java.util.concurrent 패키지의 ConcurrentHashMap과 ConcurrentLinkedQueue이다. ConcurrentHashMap은 Map 구현 클래스 이고, ConcurrentLinkededQueue는 Queue 구현 클래스 이다. ConcurrentHashMa..