본문 바로가기

Java/Concurrency

(2)
[Concurrency] vs Parallelism 이번 장부터 자바의 Concurrency Utilities에 대해서 알아보기 전에 Concurrency(동시성)에 대해서 짧게 알아보도록 한다. 예시에서 사용되는 모든 코드는 깃허브 (링크)의 테스트 코드로 첨부하였으므로 필요한 경우 참고하도록 한다. Concurrency(동시성) vs Parallelism(병렬성) 우리는 한 번에 여러가지 일을 처리하는데 동시에 처리가 된다면 Concurrent한 프로그램이라고 얘기한다. 이것은 하드웨어 관점에서 바라본 것이 아니라 프로그램을 논리적으로 바라봤기 때문이다. 실제로 프로그램이 작동하는 방식을 보면 우리가 원하는 것처럼 병렬로 동시에 작업이 진행되는 것은 아니지만 병렬로 진행되는 것 처럼 느껴지는 것일 수 있다. 그림을 살펴보면 위의 상황은 하나의 자판기에..
[Concurrency] Process & Thread 이번 장부터 자바의 Concurrency Utilities에 대해서 알아본다. 예시에서 사용되는 모든 코드는 깃허브 (링크)의 테스트 코드로 첨부하였으므로 필요한 경우 참고하도록 한다. Process & Thread Program 컴퓨터에서 실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 모음(집합)이다. 위키백과 Process를 실행시키기 위해 준비되어 있는 설치파일이다. Process 프로세스는 컴퓨터에서 실행되는 프로그램을 말한다. 위키백과 PC를 켜고 카카오톡을 설치하면 프로그램이 설치된 것이며 실행하면 카카오톡에게 메모리가 할당되며 프로세스가 실행되는 것이다. OS로부터 메모리 뿐만 아니라 필요한 자원을 할당받는다. 할당 받는 자원은 아래와 같다. CPU 사용 시간 ..