앞서서 쓰레드에 관한 기본적인 내용들을 알아보았다.
이번에는 쓰레드의 세부적인 것을 알아보도록 하자.
쓰레드의 우선순위
· 쓰레드는 우선순위(priority)라는 것을 가지고 있어서 우선순위의 값에 따라 쓰레드가 얻는 시간을 다르게 줄 수 있음.
· 쓰레드가 가질 수 있는 우선 순위의 범위는 1에서 10까지 이며 높을수록 우선순위가 높은 것. (우선 순위의 높고 낮음은 절대적인 것이 아닌 상대적인 것)
· 쓰레드의 우선순위는 쓰레드를 생성한 쓰레드로부터 상속 받는 것. (main메서드를 수행하는 쓰레드는 우선순위가 5이므로 main 메서드 내에서 생성하는 쓰레드는 자동적으로 우선순위가 5가 됨)
void setPriority(int newPriority); // 쓰레드의 우선순위를 지정한 값으로 변경
int getPriority(); // 쓰레드의 우선순위를 반환
public static final int MAX_PRIORITY = 10; // 최대 우선순위
public static final int MIN_PRIORITY = 1; // 최소 우선순위
public static final int NORM_PRIORITY = 5; // 보통 우선순위
쓰레드의 스케줄링과 관련된 메서드
생성자 / 메서드 |
설명 |
void interrupt() |
sleep()이나 join()에 의해 일시정지인 쓰레드를 실행대기상태로 만듬 해당 쓰레드에서는 interruptedException일 발생하여 일시정지상태를 벗어나게 됨 |
void join() void join(long millis) void join(long millis, ont nanos) |
지정된 시간동안 쓰레드가 실행되도록 함 지정된 시간이 지나거나 작업이 종료되면 join()을 호출한 쓰레드로 다시 돌아가 실행을 계속 함 |
void resume() |
suspend()에 의해 일시정지해 있는 쓰레드를 실행대기상태로 만듬 교착상태에 빠지기 쉽기 때문에 deprecated됨 |
static void sleep(long millis) static void sleep(long millis, int nanos) |
지정된 시간동안 쓰레드를 일시정지시킴 지정한 시간이 지나면 자동적으로 다시 실행대기 상태가 됨 |
void stop() |
쓰레ㅐ드를 즉시 종료 시킴 교착상태에 빠지기 쉽기 때문에 deprecated됨 |
void suspend() |
쓰레드를 일시정지시킴 resume()을 호출하면 다시 실행대기상태가 됨 교착상태에 빠지기 쉽기 때문에 deprecated됨 |
static void yield() |
실행 중에 다른 쓰레드에게 양보하고 실행대기상태가 됨 |
쓰레드의 상태
상태 |
설명 |
NEW |
쓰레드가 생성되고 아직 start()가 호출되지 않은 상태 |
RUNNABLE |
실행 중 또는 실행 가능한 상태 |
BLOCKED |
동기화 블럭에 의해서 일시정지된 상태 (lock이 풀릴 때까지 기다리는 상태) |
WAITING, TIMED_WAITING |
쓰레드의 작업이 종료되지는 않았지만 실행가능하지 않은(unrunnable) 일시정지 상태 TIMED_WAITING은 일시정지시간이 지정된 경우를 의미 |
TERMINATED |
쓰레드의 작업이 종료된 상태 |
[참고] 자바의 정석
2017/11/03 - [프로그래밍/Java] - 쓰레드(Thread) 1
'프로그래밍 > Java' 카테고리의 다른 글
enum 1 (0) | 2018.01.02 |
---|---|
쓰레드(Thread) 3 (0) | 2017.11.20 |
쓰레드(Thread) 1 (0) | 2017.11.03 |
컬렉션 프레임워크(Collection Framework)란? (0) | 2017.09.01 |
throw와 throws 비교 (0) | 2017.08.28 |
WRITTEN BY
- 김치치즈스마일
세계정복!