'쓰레드의 상태'에 해당하는 글 1건

앞서서 쓰레드에 관한 기본적인 내용들을 알아보았다.

이번에는 쓰레드의 세부적인 것을 알아보도록 하자.

 

 

쓰레드의 우선순위

· 쓰레드는 우선순위(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
김치치즈스마일
세계정복!

,