728x90
Section18 스레드
프로세스
프로세스란 프로그램이 동작하여 메모리에 올려진 상태를 말하며 실행 중인 프로그램을 의미합니다.
스레드
스레드는 프로세스 내에서 독립적으로 실행되는 작업 단위를 의미합니다. 프로세스 내의 주소 공간이나 자원들과 같은 스레드끼리 공유하면서 실행됩니다.
멀티 스레드
스레드는 임의의 클래스에 Thread 클래스를 상속하거나 Runnable 인터페이스를 상속하여 구현할 수 있는데, 하나의 프로세스 안에서 스레드를 여러 개 선언하여 멀티 스레드를 사용할 수 있습니다.
동기화 메서드
멀티 스레드를 구현할 경우, 스레드의 동작 순서와 자원 공유를 위해 스레드 동기화를 통해 기능을 구현합니다. 스레드 객체 내부의 동기화 메서드를 실행하면 다른 스레드가 동기화 메서드를 실행하지 못하도록 스레드끼리의 자원 공유를 제어합니다.
스레드 상태
스레드를 생성하고 동작을 시작하면 다양한 상태를 가지게 됩니다. 스레드의 상태는 자동으로 변경될 수 있고 개발자에 의해 임의로 변경할 수 있습니다.
상태 | 상수 | 설명 |
생성 | NEW | 스레드 객체가 생성되었지만 아직 start() 메서드가 호출되지 않은 상태 |
대기 | RUNNABLE | 실행 대기 또는 실행 상태로 언제든지 갈 수 있는 상태 |
일시정지 | WATING | 다른 스레드가 종료될 때까지 대기하는 상태 |
TIMES_WATING | 주어진 시간 동안 대기하는 상태 | |
BLOCKED | 락이 풀릴 때까지 대기하는 상태 | |
종료 | TERMINATED | 수행을 종료한 상태 |
sleep 메서드
스레드의 상태를 잠시 정지하고 싶다면 sleep 메서드를 사용해 원하는 시간(초 단위)만큼 정지시킬 수 있습니다.
wait(), notify() 메서드
wait(), notify() 메서드를 사용하면 원하는 시점에 스레드를 잠시 종료하거나 다시 시작할 수 있습니다.
728x90