JAVA/포스팅

자바 쓰레드의 우선순위

짜집퍼박사(짜박) 2023. 11. 21. 23:49

자바에서 쓰레드의 우선순위는 쓰레드 스케줄링에서 사용되며, 쓰레드가 어떤 순서로 실행될지 결정하는 데 영향을 미치는 값입니다. Java에서는 쓰레드의 우선순위를 1에서 10까지의 정수로 표현하며, 숫자가 높을수록 우선순위가 높습니다. 기본적으로 모든 쓰레드의 우선순위는 5입니다.

 

쓰레드 우선순위 설정

쓰레드의 우선순위를 설정하려면 setPriority(int priority) 메서드를 사용합니다. 이 메서드는 쓰레드에게 우선순위를 할당합니다.

Thread thread = new Thread();
thread.setPriority(Thread.MAX_PRIORITY); // 최대 우선순위

 

쓰레드 우선순위 조회

현재 실행 중인 쓰레드의 우선순위를 확인하려면 getPriority() 메서드를 사용합니다.

int priority = Thread.currentThread().getPriority();
System.out.println("현재 쓰레드의 우선순위: " + priority);

 

주의사항

1. 범위 : 쓰레드의 우선순위는 1에서 10 사이의 정수이어야 합니다.
2. 기본값 : 모든 쓰레드의 기본 우선순위는 5입니다.
3. 부모-자식 관계 : 하위 쓰레드는 상위 쓰레드의 우선순위를 상속받습니다. 그러나 우선순위의 상속은 보장되지 않습니다. 따라서 부모 쓰레드의 우선순위를 변경해도 자식 쓰레드의 우선순위가 변경되지 않을 수 있습니다.
4. 운영체제 의존적 : 쓰레드 우선순위는 JVM 및 운영체제에 의존적입니다. 따라서 운영체제의 특성에 따라 우선순위가 다르게 해석될 수 있습니다.

class PriorityThread extends Thread {
    public void run() {
        System.out.println("Thread " + Thread.currentThread().getId() +
                " with priority " + Thread.currentThread().getPriority());
    }
}

public class PriorityExample {
    public static void main(String[] args) {
        PriorityThread thread1 = new PriorityThread();
        PriorityThread thread2 = new PriorityThread();

        thread1.setPriority(Thread.MIN_PRIORITY); // 1
        thread2.setPriority(Thread.MAX_PRIORITY); // 10

        thread1.start();
        thread2.start();
    }
}

위의 예제에서는 두 개의 쓰레드를 생성하고 각각의 우선순위를 설정한 후 실행합니다. 두 쓰레드는 각각의 우선순위에 따라 실행됩니다. 우선순위가 높은 쓰레드가 CPU 자원을 더 많이 할당받을 가능성이 높습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 데몬 쓰레드(daemon thread)  (0) 2023.11.21
자바 쓰레드 그룹(thread group)  (0) 2023.11.21
자바 멀티쓰레드  (0) 2023.11.21
자바 싱글쓰레드  (0) 2023.11.21
자바 쓰레드 start()와 run()  (0) 2023.11.21