13-5. 쓰레드의 우선 순위

Hyun Jun·2022년 2월 12일
0

자바의 정석

목록 보기
48/52
post-thumbnail
post-custom-banner

쓰레드의 우선 순위

Thread 클래스는 우선 순위(priority)라는 멤버 변수를 갖고 있는데, 이 값에 따라 쓰레드가 얻는 실행 시간이 달라짐.

우선 순위를 조절하여 중요한 쓰레드일수록 더 많은 실행 시간을 갖도록 할 수 있음.

사용자에게 빠른 반응을 보여줘야 하는 작업을 하는 쓰레드의 우선 순위는 높아야함.

 

우선 순위 지정하기

우선 순위의 범위는 int 1 ~ 10 (숫자가 클수록 우선 순위 높음)

main 메서드를 수행하는 쓰레드의 우선 순위는 5

쓰레드는 자신을 생성한 쓰레드로부터 우선 순위를 상속 받음

main 메서드에서 생성한 쓰레드의 우선 순위는 똑같이 5가 됨.

 

  • void setPriority(int newPriority)

    쓰레드의 우선 순위를 지정한 값으로 변경

  • int getPriority()

    쓰레드의 우선 순위 반환

 

class ThreadExample {
    public static void main(String[] args) {
        Thread1 t1 = new Thread1();
        Thread2 t2 = new Thread2();

        t2.setPriority(7);
        System.out.println("t1: " + t1.getPriority());
        System.out.println("t2: " + t2.getPriority());

        t1.start();
        t2.start();
    }
}

class Thread1 extends Thread {
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.printf("%s", new String("-"));
            for (int x = 0; x < 10000000; x++); // 처리를 지연시키기 위한 빈 반복문
        }
    }
}

class Thread2 extends Thread {
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.printf("%s", new String("|"));
            for (int x = 0; x < 10000000; x++);
        }
    }
}
t1: 5
t2: 7
-|-|------------------------------------------------------------------------------------------------------------------------------------------------||||----------||||||||||||||||||||||||||||--------------------------------------------------------------||||||||----------------||||||||||||||||--------------||||----------------------------||||||||||||||------------------------------------------------------------|||||||||||||||||||||||...생략

우선 순위를 달리했는데도 쓰레드를 실행시켜보면 티가 나지 않음.

요즘의 컴퓨터 같은 멀티 코어 환경에서는 쓰레드의 우선 순위에 따른 차이가 없기 때문.

코어가 많기 때문에 굳이 한 코어 안에서 우선 순위를 나누어 여러 쓰레드를 실행시키기보다 여러 개의 코어로 분산시켜서 실행하기 때문.

그래서 쓰레드에 우선 순위를 지정하기보다는 PriorityQueue에 작업들을 집어넣고 우선 순위대로 처리되게 하는 것이 현실적.

profile
Back-end Engineer 👨‍💻
post-custom-banner

0개의 댓글