반응형
package multi_thread;
import java.awt.Toolkit;
public class ThreadPriority {
public static void main(String[] args) {
// 방법1
Thread thread = new BeepThread();
thread.start();
thread.setPriority(Thread.MAX_PRIORITY); // 우선순위 10
thread.setPriority(Thread.NORM_PRIORITY); // 우선순위 5
thread.setPriority(Thread.MIN_PRIORITY); // 우선순위 1
// 방법2 (익명 객체를 이용한 방법)
/*
Thread thread2 = new Thread() {
public void run() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
for(int i = 0 ; i < 5 ; i++) {
toolkit.beep();
try {Thread.sleep(500);} catch(Exception e) {}
}
}
};
thread2.start();
*/
for (int i = 0 ; i < 5 ; i++) {
System.out.println("띵");
try {Thread.sleep(500);} catch(Exception e) {}
}
}
}
위는 저번에 했던 예제를 그냥 가져왔습니다. 이번 내용은 큰 실습내용이 없기 때문입니다.
멀티스레드가 병렬적으로 실행되는 거라고 했는데 실제로는 번갈아가면서 실행하는 작업입니다.
자바에서 스레드 스케줄링은 우선순위(Priority) 방식과 순환 할당 (Round-Robin) 방식을 사용합니다.
우선순위가 높은 스레드가 실행 상태를 더 많이 가져가게 되는 것이소
시간 할당량(Time slice)를 정해서 하나의 스레다가 정해진 시간만큼 실행 하고 다른 스레드를 실행하는 방식입니다.
thread.setPriorty(우선순위); 를 이용해 우선순위를 정해줄 수 있습니다.
1 ~ 10까지 값이 들어갑니다. 기본적으로 모든 스레드는 5 우선순위를 할당 받습니다.
1은 가장 낮고 10이 가장 높습니다.
우선순위는 최소한 5개 이상의 스레드가 실행 되어야 우선순위의 영향을 받습니다.
thread.setPriority(Thread.MAX_PRIORITY)
thread.setPriority(Thread.NORM_PRIORITY)
thread.setPriority(Thread.MIN_PRIORITY)
이런식으로 10 5 1이라는 숫자를 대신 넣을 수 있습니다.
MAX는 가장 큰 수라는 의미 10을 NORM은 평균이라는 의미 5 MIN은 가장 적은 수라는 의미 1을 의미합니다.
반응형
'[Java] > [Java]' 카테고리의 다른 글
[Java] 자바 멀티스레드 [Multi-Thread] 실행 대기 상태 만들기 (yield()) [실행 양보] (0) | 2021.08.04 |
---|---|
[Java] 자바 멀티스레드 [Multi-Thread] 공유 객체 임계영역 설정 (synchronized) (0) | 2021.08.04 |
[Java] 자바 멀티스레드 [Multi-Thread] 스레드 이름 설정하기 (setName, getName) (0) | 2021.08.04 |
[Java] 자바 멀티스레드 [Multi-Thread] (Thread) (0) | 2021.08.04 |
[Java] 자바 멀티스레드[Multi-Thread] (Runnable) (0) | 2021.08.04 |