https://youtu.be/KWZjeW6zkyY?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다.
[쓰레드의 우선순위(priority of Thread)]
- 작업의 중요도에 따라 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업 시간을 갖게 할 수 있다.
- 자바에서는 쓰레드의 우선순위를 1 ~ 10까지 줄 수 있다. (10이 가장 중요)
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; //보통 우선 순위
[실습]
package javajungsuk;
public class Java13_6 {
public static void main(String[] args) {
ThreadEx6_1 th1 = new ThreadEx6_1();
ThreadEx6_2 th2 = new ThreadEx6_2();
//쓰레드의 경우 기본 순위 5이고 쓰레기2는 7로 설정
th2.setPriority(7);
System.out.println("Priority of th1(-) : " + th1.getPriority());
System.out.println("Priority of th2(-) : " + th2.getPriority());
th1.start();
th2.start();
}
}
class ThreadEx6_1 extends Thread{
public void run() {
for(int i = 0 ; i < 300 ; i++) {
System.out.print("-");
for (int x = 0; x < 10000000; x++);//시간 지연용 for
}
}
}
class ThreadEx6_2 extends Thread{
public void run() {
for(int i = 0 ; i < 300 ; i++) {
System.out.print("|");
for (int x = 0; x < 10000000; x++);//시간 지연용 for
}
}
}
- 우선순위 할당에 따라서 우선순위가 높은 게 더 빨리 끝날 거 같지만 꼭 그렇지만은 않다. (반드시 꼭 그렇진 않다.)
- 그러나 확률상 우선순위가 높은 쓰레드가 더 빨리 끝날 확률이 높아진다.(확률적인 문제임)
- 여담이지만 마우스 포인터는 우선순위가 아주 높다고 한다. 다른 프로그램이 멈췄다고 마우스까지 멈추면 매우 답답하기 때문이다.
[쓰레드 그룹]
- 서로 관련된 쓰레드를 그룹으로 묶어서 다루기 위한 것이다.
- 모든 쓰레드는 반드시 하나의 쓰레드 그룹에 포함되어 있어야 한다.
- 쓰레드 그룹을 지정하지 않고 생성한 쓰레드는 'main 쓰레드 그룹'에 속한다.
- 자신을 생성한 쓰레드(부모 쓰레드)의 그룹과 우선순위를 상속 받는다.
[쓰레드 그룹의 메서드]
'Java > 객체지향' 카테고리의 다른 글
[객체지향][쓰레드/thread] - sleep(), interrupt() (0) | 2022.03.02 |
---|---|
[객체지향][쓰레드/thread] - 데몬 쓰레드, 쓰레드의 상태 (0) | 2022.03.01 |
[객체지향][쓰레드/thread] - 싱글 쓰레드와 멀티 쓰레드, 쓰레드의 I/O 블락킹 (0) | 2022.02.28 |
[객체지향][쓰레드/thread] - 쓰레드구현과 실행 (0) | 2022.02.26 |
[객체지향][쓰레드/thread] - 쓰레드 (0) | 2022.02.26 |