☕️ Java/기본

[Java] Thread (4) - 쓰레드의 우선순위

말 랑 2022. 7. 13. 09:24
728x90

 

 

 

쓰레드의 우선순위

우선순위란 이름 그대로 우선적으로 처리해야할 순서를 정해주는 것입니다.

 

쓰레드에는 우선적으로 처리해야 하는 작업에 대해 우선순위 속성을 부여할 수 있습니다.

우선순위의 값이 클수록 우선순위가 높아 먼저 처리됩니다.

 

우선순위는 최대 1~10 사이 범위의 정수입니다.

 

 

 

 

 

 

 

 

쓰레드의 우선순위 부여 방법

setPriority ( int newPriority )

 

setPriority를 통해 쓰레드의 우선순위를 부여할 수 있으며, 우선순위는 getPriority()를 통해 알아볼 수 있습니다.

쓰레드의 우선순위 변경은 start()를 호출하기 전에만 가능하며, 호출한 이후에는 우선순위를 바꾸더라도 아무런 영향이 없습니다.

 

 

 

 

 

 

 

 

 

메인 쓰레드의 우선순위

메인 쓰레드는 5라는 우선순위를 가집니다.

 

우선순위는 쓰레드를 생성한 쓰레드로부터 상속받습니다.

 

즉 메인쓰레드로부터 생성된 쓰레드들은 모두 5의 우선순위를 지닙니다.

 

 

 

 

 

 

 

 

 

우선순위가 높으면?

우선순위가 5인 쓰레드 $th_1$ 과 7인 쓰레드 $th_2$ 를 가정하겠습니다.

 

$th_2$ 의 우선순위가 높다고 하여 $th_2$ 가 모두 실행되고 $th_1$ 이 실행되지 않습니다.

 

단지 $th_2$ 가 $th_1$ 에 비하여 더 많은 실행시간을 부여받는 것입니다.

 

그러나 쓰레드에 실행시간을 부여하는 것은 전적으로 OS 스케줄러의 역할이므로, 완벽하게 예상할 수 없습니다.

 

 

 

 

 

 

 

 

728x90