동시성 | 병렬성 |
---|---|
동시에 실행되어 것 처럼 보이는 것 | |
독립적인 작업을 작은 단위의 연산으로 나누어 시간을 분할하여 동시에 처리되는 것처럼 보임 | 실제로 동시에 여러 작업이 처리된다 |
싱글코어 멀티 스레드를 동작시키는 방식 | 멀티 코어에서 멀티 스레드를 동작시키는 것 |
한번에 많은 것을 처리한다 | 한번에 많은 일을 처리 |
논리적인 개념 | 물리적인 개념 |
자바는 동시성 프로그램 작성에 용이하지만, 안정성(safety)와 응답가능(liveness)상태를 유지하는 것은 어렵다.
Java
Java 5
Java 7
Java 8
<aside> 💡 속도를 높이고자 스트림 파이프라인을 마구잡이로 병렬화해서는 안된다. → 성능이 나빠짐 (느려짐, 응답불가 상태) → 결과 자체가 잘못될 수 있음 → 예상하지 못한 동작이 발생할 수 있음
</aside>