쓰레드의 우선순위
- 스케줄러가 어떤 쓰레드를 실행하는데 있어서 우선순위에 따라 실행 (단, 절대적인 수치는 아니며 확률적으로 실행 비중을 높여줌)
- Thread 객체의 getPriority() 메서드 : 우선순위 조회 Thread 객체의 setPriority() 메서드 : 우선순위 설정 => 우선순위는 1~10까지 범위의 정수 사용 => 자주 사용되는 우선순위값을 Thread 클래스의 상수로 제공
- MAX_PRIORITY : 10(높음) NORM_PRIORITY : 5(보통)-> 기본값 MIN_PRIORITY : 1(낮음)
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 1; i <= 100; i++) {
System.out.println("☆☆☆☆☆☆");
//출력문 실행 후 현재 쓰레드를 0.1초 동안 재우기
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 1; i <= 100; i++) {
System.out.println("○○○○○");
//출력문 실행 후 현재 쓰레드를 0.1초 동안 재우기
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t1.start();
t2.start();
번갈아 출력되는것을 확인
System.out.println("t1 쓰레드 우선순위:"+t1.getPriority());
System.out.println("t2 쓰레드 우선순위:"+t2.getPriority());
t1 쓰레드 우선순위:5 t2 쓰레드 우선순위:5
우선순위를 바꿔보자!
t1.setPriority(Thread.MIN_PRIORITY); // 우선순위를 1로 변경
t2.setPriority(Thread.MAX_PRIORITY); // 우선순위를 10으로 변경
System.out.println("t1 쓰레드 우선순위:"+t1.getPriority());
System.out.println("t2 쓰레드 우선순위:"+t2.getPriority());
t1 쓰레드 우선순위:1 t2 쓰레드 우선순위:10
'JAVA' 카테고리의 다른 글
[JAVA] 자바 I/O - 키보드로부터 데이터를 입력받아 처리하는 방법 5가지 (1) | 2023.12.05 |
---|---|
[JAVA] 쓰레드를 일시 정지 상태로 만드는 방법 (1) | 2023.11.28 |
[JAVA] 멀티쓰레딩 구현 코드의 변형 (1) | 2023.11.28 |
[JAVA] 이미 클래스를 상속받은 클래스에 멀티쓰레딩을 구현해야 하는 경우 (1) | 2023.11.28 |
[JAVA] 싱글쓰레드와 멀티쓰레드 예제 (0) | 2023.11.28 |