☕️ 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