컴퓨터 유저들은 보통 컴퓨터로 동시에 여러가지 일들을 한다. 가령, 워드 프로세서를 실행하면서 음악을 듣는다던지, 다운로드를 받는 다든지의 경우이다.
워드 프로세서 하나만 봐도 프린트를 하는 동안 동시의 글의 내용을 바꾸거나 글씨체를 바꾸거나 화면 크기를 조정하거나, 마우스로 워드 프로세스의 메뉴를 클릭하거나 등등 동시에 여러가지 일을 할 수 있다. 이러한 종류의 소트프웨어를 concurrent software 라고 한다.
Concurrent programming 에 있어서 두 가지 중요한 요소가 있는데 하나는 Processes 이고 하나는 threads 이다. Java concurrent programming 에서는 대부분이 threads 와 관련이 있지만 Processes 역시 중요하다.
컴퓨터 시스템은 많은 processes 와 threads 를 가지고 있다. 이는 단일 코어 시스템에서도 마찬가지이다.
단일 코어 시스템에서는 time slicing 이라는 방법을 사용한다. 하나...