스레드의 개념
프로세스(process)란?
- 프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있습니다.
- 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다.
- 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성됩니다.
스레드의 개념
스레드(thread)란?
- 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다.
- 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다.
- 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.

스레드의 생성과 실행
Thread 클래스를 상속하는 방법
- start() : 스레드를 시작하는 메소드
- run() : 실제 작업을 수행하는 메소드
- sleep(time:milisec단위) : 주어진 시간만큼 실행 흐름을 중지시키는 메소드
Runnable 인터페이스를 구현하는 방법
- run() 메서드를 반드시 재정의 해야 함.
- 재정의 한 클래스를 Thread 클래스의 생성자 매개변수로 하여 Thread 객체를 생성해서 사용.
스레드의 종류
- 독립 스레드
- 데몬 스레드
Thread 클래스
Thread 클래스의 생성자

Thread 클래스의 주요 메서드

스레드 간의 커뮤니케이션(동기화)
Critical section의 동기화 문제
- 동기화 : 공유자원을 상대로 순서대로 작업이 이루어지는 것을 동기화가 보장된다고 한다.
// 동기화를 보장한다는것은 우선 사용중인 쓰레드가 공유자원이 락을걸어서 순서대로 사용하게 하는것을 뜻한다.
- Critical section : 스레드들이 공유하는 영역(데이터)
- 동기화(Synchronized) 블럭
- 동기화(Synchronized) 메서드
스레드의 제어를 위한 도구
- setPriority() : 스레드가 Run 상태에 들어갈 수 있는 우선권을 결정.
- sleep() : 일정 시간 동안 작업을 멈추게 한다.
- wait() : 스레드를 대기상태(NotRunnable)로 보낸다.
- notify() : 대기상태에 있는 스레드를 Runnable 상태로 복귀시켜서 작업을 재개하게 한다.
- notifyAll() : 대기상태에 있는 모든 스레드를 Runnable 상태로 복귀시켜서 작업을 재개하게 한다.
'IT공부 > JAVA' 카테고리의 다른 글
JavaFX 이벤트 처리 (0) | 2019.05.27 |
---|---|
람다식(Lambda Expressions in Java) (0) | 2019.05.22 |
중첩 클래스 (0) | 2019.05.20 |
컬렉션 프레임워크(사용빈도 최상) (0) | 2019.05.16 |
기본 API (0) | 2019.05.13 |