은은하게 코드 뿌시기

쓰레드 우선순위 본문

자바/자바 기본

쓰레드 우선순위

은은하게미친자 2022. 7. 5. 23:59
728x90

: 쓰레드는 우선순위 속성의 값에 따라 쓰레드가 얻는 실행시간이 달라진다.

 

void setPriority(int newPriority)   : 쓰레드의 우선순위를 지정한 값으로 변경한다.
int getPriority()                            : 쓰레드의 우선순위를 반환한다.


public static final int MAX_PRIORITY = 10  // 최대우선순위
public static final int MIN_PRIORITY = 1  // 최소우선순위
public static final int NORM_PRIORITY = 5  // 보통

쓰레드 우선순위 의 범위는 1~10 이며, 숫자가 높을 수록 우선순위가 높다.

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

 

main 메서드를 수행하는 쓰레드는 우선순위가 5 이므로, main 메서드내에서 생성하는 쓰레드의 우선순위는 자동적으로 5가 된다.

 

우선순위는 싱글코어에서는  우선순위가 높은 쓰레드에 더 많은 양의 실행시간이 주어지지만, 멀티코에에서는 차이가 거의없다. 또 멀티코어라 해도 os마다 다른 방식으로 스케줄링 하기 떄문에 다른 결과를 얻을 수있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package kr.co.threadtest;
 
public class ThreadEx8 {
 
    public static void main(String[] args) {
        ThreadEx8_1 t1 = new ThreadEx8_1();
        ThreadEx8_2 t2 = new ThreadEx8_2();
        
        t2.setPriority(7);
        
        System.out.println("t1 Priority :" + t1.getPriority());
        System.out.println("t2 Priority :" + t2.getPriority());
        
        t1.start();
        t2.start();
        
        
    }
 
}
 
class ThreadEx8_1 extends Thread{
    @Override
    public void run() {
        for(int i=0; i<300; i++) {
            System.out.print("-");
            for(int x=0; x<10000000; x++);
        }
    }
}
class ThreadEx8_2 extends Thread{
    @Override
    public void run() {
        for(int i=0; i<300; i++) {
            System.out.print("|");
            for(int x=0; x<10000000; x++);
        }
    }
}
cs

 

 

 

728x90

'자바 > 자바 기본' 카테고리의 다른 글

데몬쓰레드(daemon thread)  (0) 2022.07.06
쓰레드 그룹(thread group)  (0) 2022.07.06
스레드 기초 및 예제  (0) 2022.07.05
JAVA SQL DB 연동 소스 예제  (0) 2022.06.27
JAVA execute, executeQuery, executeUpdate  (0) 2022.06.27
Comments