자바(Java) - 쓰레드(Thread) 예제 part4 - 스레드에 우선순위를 부여해보자~!

안녕하세요

이번 시간에는 자바의 스레드에서 우선순위를 부여하여

실행순서를 바꿀 수 있는 예제를 올려봅니다.


class SnailThread extends Thread{

public SnailThread(String name){
setName(name);
}

@Override
public void run(){
for(int i=0;i<5;i++){
System.out.println(getName()+"스레드가 기어가요");
try{
Thread.sleep(1000);
}catch(InterruptedException e){
break;
}
}
}

}

public class ThreadTest4 {

public static void main(String[] args) {
SnailThread tr1= new SnailThread("첫번째 스레드");
SnailThread tr2= new SnailThread("두번째 스레드");
SnailThread tr3= new SnailThread("세번째 스레드");

//스레드에 우선순위를 부여하여 스케줄러에 영향을 줄 수 있다.
tr1.setPriority(Thread.MIN_PRIORITY); // 우선순위 최소값(1) 할당
tr2.setPriority(Thread.NORM_PRIORITY); // 우선순위 보통값(5) 할당
tr3.setPriority(Thread.MAX_PRIORITY); // 우선순위 최대값(10) 할당

tr1.start(); tr2.start(); tr3.start();

//tr2가 자기와 우선순위가 같거나 높은 스레드에게 양보한다. (낮은 스레드에게 양보를 안한다)
tr2.yield();

/*try{
tr1.join();
tr1스레드가 일을 다 마칠 때 까지 이 메소드를 호출한 스레드(여기서는 메인 스레드)가 block 상태가 된다
}catch(InterruptedException e){
}*/

System.out.println("Hello World~~");
}
}

위의 예제를 실행은 했습니다만..

실제 의도한 바와 다르게 우선순위에 영향이 없더군요

왜 그런지는 모르겠습니다..

어쨋든 결과 화면은 아래와 같습니다





댓글 없음:

댓글 쓰기