Chapter 20. 멀티 스레드

학습목표

동시에 여러 작업을 처리하는 멀티 스레드 프로그래밍의 기초와 동기화를 학습합니다.

목차

14.1 멀티 스레드 개념

운영체제는 실행 중인 프로그램을 프로세스process로 관리한다. 멀티 태스킹multi tasking은 두 가지 이상의 작업을 동시에 처리하는 것을 말하는데, 이때 운영체제는 멀티 프로세스를 생성해서 처리한다. 하지만 멀티 태스킹이 꼭 멀티 프로세스를 뜻하지는 않는다….

14.2 메인 스레드

모든 자바 프로그램은 메인 스레드main thread가 main 메소드를 실행하면서 시작된다. 메인 스레드는 main 메소드의 첫 코드부터 순차적으로 실행하고, main 메소드의 마지막 코드를 실행하거나 return 문을 만나면 실행을 종료한다. public stati…

14.3 작업 스레드 생성과 실행

멀티 스레드로 실행하는 프로그램을 개발하려면 먼저 몇 개의 작업을 병렬로 실행할지 결정하고 각 작업별로 스레드를 생성해야 한다. 자바 프로그램은 메인 스레드가 반드시 존재하기 때문에 메인 작업 이외에 추가적인 작업 수만큼 스레드를 생성하면 된다. 자바는 작업 스레드도…

14.4 스레드 이름

스레드는 자신의 이름을 가지고 있다. 메인 스레드는 ‘main’이라는 이름을 가지고 있고, 작업 스레드는 자동적으로 ‘Thread-n’이라는 이름을 가진다. 작업 스레드의 이름을 Thread-n 대신 다른 이름으로 설정하고 싶다면 Thread 클래스의 setName 메…

14.5 스레드 상태

스레드 객체를 생성NEW하고, start 메소드를 호출하면 곧바로 스레드가 실행되는 것이 아니라 실행 대기 상태RUNNABLE가 된다. 실행 대기 상태란 실행을 기다리고 있는 상태를 말한다. 실행 대기하는 스레드는 CPU 스케줄링에 따라 CPU를 점유하고 run 메소드…

14.6 스레드 동기화

멀티 스레드는 하나의 객체를 공유해서 작업할 수도 있다. 이 경우, 다른 스레드에 의해 객체 내부 데이터가 쉽게 변경될 수 있기 때문에 의도했던 것과는 다른 결과가 나올 수 있다. 스레드가 사용 중인 객체를 다른 스레드가 변경할 수 없도록 하려면 스레드 작업이 끝날 때…

14.7 스레드 안전 종료

스레드는 자신의 run 메소드가 모두 실행되면 자동적으로 종료되지만, 경우에 따라서는 실행 중인 스레드를 즉시 종료할 필요가 있다. 스레드를 안전하게 종료하는 방법은 사용하던 리소스들을 정리하고 run 메소드를 빨리 종료하는 것이다. 주로 조건 이용 방법과 interr…

14.8 데몬 스레드

데몬daemon 스레드는 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드이다. 주 스레드가 종료되면 데몬 스레드도 따라서 자동으로 종료된다. 스레드를 데몬으로 만들기 위해서는 주 스레드가 데몬이 될 스레드의 setDaemontrue를 호출하면 된다. packa…

14.9 스레드풀

병렬 작업 처리가 많아지면 스레드의 개수가 폭증하여 CPU가 바빠지고 메모리 사용량이 늘어난다. 이에 따라 애플리케이션의 성능 또한 급격히 저하된다. 이렇게 병렬 작업 증가로 인한 스레드의 폭증을 막으려면 스레드풀ThreadPool을 사용하는 것이 좋다. 스레드풀은 작…

확인문제

서브목차