스레드 우선순위 - 1

"수업을 계속합시다. 스레드 우선 순위는 무엇이며 왜 필요한가요?

"실제 문제에서 서로 다른 스레드가 수행하는 작업의 중요성은 크게 다를 수 있습니다. 스레드 우선 순위 개념은 이 프로세스를 제어하기 위해 만들어졌습니다. 각 스레드에는 1에서 10까지의 숫자로 표시되는 우선 순위가 있습니다."

"10이 최우선 순위입니다."

"1이 가장 낮습니다."

"우선 순위가 지정되지 않은 경우 스레드는 우선 순위 5(정상)를 얻습니다."

스레드의 우선 순위는 작업에 큰 영향을 미치지 않지만 대신 권장 사항에 가깝습니다. 실행해야 하는 휴면 스레드가 여러 개인 경우 Java 시스템은 우선 순위가 높은 스레드를 먼저 시작합니다.

"Java 머신은 적절하다고 판단되는 대로 스레드를 관리합니다. 우선 순위가 낮은 스레드는 유휴 상태로 두지 않습니다. 단순히 다른 스레드보다 실행 시간이 짧을 뿐 여전히 실행됩니다."

"대부분의 경우 스레드는 항상 동일한 우선 순위로 실행됩니다. 한 스레드에 다른 스레드보다 더 많은 권한을 부여하려는 시도는 종종 프로그램의 구조적 문제를 나타냅니다."

"우와. 그리고 나는 이미 내 스레드에 최고 우선 순위를 할당하여 스레드가 10배 더 많은 작업을 수행하는 꿈을 꾸었습니다."

"여기 상황은 마무리 단계에 가깝습니다. 우선 순위가 높은 스레드는 더 많이 작동할 수 있고 작동하지만 그렇지 않을 수도 있습니다. 보장할 수 없습니다."

"스레드의 우선 순위를 어떻게 변경합니까?"

"매우 쉽습니다. Thread 클래스에는 두 가지 방법이 있습니다."

방법 설명
void setPriority(int newPriority)
새로운 우선 순위 설정
int getPriority()
현재 스레드 우선 순위를 반환합니다.

"Thread 클래스에는 세 가지 상수도 있습니다."

공개 최종 정적 정수 MIN_PRIORITY = 1;

공개 최종 정적 정수 NORM_PRIORITY = 5;

공개 최종 정적 int MAX_PRIORITY = 10;

"추측해 보겠습니다. MIN_PRIORITY가 최소 우선순위이고 MAX_PRIORITY가 최대 우선순위이며 NORM_PRIORITY가 기본 우선순위입니까?"

"네, 맞습니다. 가장 높은 스레드 우선순위를 할당하는 코드를 작성할 수 있습니다."

"여기에 뭔가 트릭이 있습니까? 이런 것이 있습니까?"

Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();

"맞아. 복잡한 건 없지?"

"네. 스레드가 시작된 후에 우선 순위를 설정/변경할 수 있습니까? 아니면 스레드가 시작되기 전에 값을 설정해야 하는 setDaemon과 같은 것입니까?"

"스레드가 시작된 후에 우선 순위를 변경할 수 있습니다. 이미 말했듯이 이것은 극적인 변화를 가져오지 않습니다."

"글쎄, 그건 사소하지만 흥미로운 주제였어. 고마워, 엘리."