(Java멀티쓰레드 디자인패턴) 순차,병렬,병행의 개념

*순차(Sequential): 복수의 업무를 [순서대로 처리]해 나가는 모습. 예를들어, 한 명이 100개의 업무를 처리할 떄 그 사람이 업무를 순차적으로 처리해 나가는 것과 마찬가지이다.

*병렬(Parallel): 복수의 업무를 [동시에 처리]하는 모습. 예를들어, 10개의 업무를 2명이 분담하여 처리할 때 두 사람이 업무를 병렬적으로 처리해 나가는 것과 같은 이치.


*병행(concurrent): 순차, 병렬보다 추상도가 높은 표현이다. 이것은 한 개의 업무를 [어떠한 순서로 처리하든 상관없는 여러 개의 작업]으로 분할하는 모습. 10개의 업무를 2종류의 독립된 작업으로 분할해 두면 병행 처리할 수 있는 준비가 끝난다.
작업자가 한명이라면 병행 처리 할 수 있도록 분할해 둔 작업을 순차적으로 처리하게 되지만, 작업자가 2명이라면 같은 작업을 병렬적으로 처리할 수도 있다.


멀티쓰레드 프로그램은 병행처리를 기술한 것이다. 만일 CPU가 한개라면 병행처리를 순차적으로 실행할 테고, CPU가 여러 개라면 병행처리를 병렬적으로 실행할지도 모른다.

우리가 사용하고 있는 컴퓨터는 대개 CPU가 한 개이므로 복수의 쓰레드가 작동하고 있다 하더라도 병행처리를 순차적으로 실행하게 된다.

댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기