Thread Priority (스레드의 우선권)
스레드의 우선권(Priority)을 어떻게 주느냐에 따라서 스레드의 작업 순서가 달라진다.
우선권이 높으면 Run 상태를 많이 차지하여 다른 스레드들 보다 작업을 빨리 끝낼 수 있다.
스레드의 우선권을 설정하기 위해서 setPriority() 메소드를 사용하고, 현재 설정되어 있는 우선권을 얻어내기 위해서 getPriority() 메소드를 사용한다.
스레드의 우선권을 셋팅하기 위해서 1부터 10까지의 수를 사용해도 되며, Thread의 스태틱 우선권 상수변수를 사용해도 된다.
♣ Thread 클래스의 스태틱 우선권 상수
스레드의 우선권(Priority)을 어떻게 주느냐에 따라서 스레드의 작업 순서가 달라진다.
우선권이 높으면 Run 상태를 많이 차지하여 다른 스레드들 보다 작업을 빨리 끝낼 수 있다.
스레드의 우선권을 설정하기 위해서 setPriority() 메소드를 사용하고, 현재 설정되어 있는 우선권을 얻어내기 위해서 getPriority() 메소드를 사용한다.
스레드의 우선권을 셋팅하기 위해서 1부터 10까지의 수를 사용해도 되며, Thread의 스태틱 우선권 상수변수를 사용해도 된다.
♣ Thread 클래스의 스태틱 우선권 상수
- public static final int MIN_PRIORITY = 1;
- public static final int NORM_PRIORITY = 5;
- public static final int MAX_PRIORITY = 10;
/**
스레드의 우선권을 테스트하는 예제
**/
class PriorityThread extends Thread {
public void run() {
int i = 0;
System.out.print( this.getName() ); // 스레드의 이름 출력
System.out.println( "[우선권:" + this.getPriority() + "]시작\t" );
while ( i < 100000 ) {
i++;
try {
this.sleep( 1 ); // 작업을 약간 지연 시킴, 우선권을 눈으로 확인하기 위함
} catch( Exception e ) {
System.out.println( e );
}
}
System.out.print( this.getName() );
System.out.println( "[우선권:" + this.getPriority() + "]종료\t" );
}
}
public class PriorityThreadMain {
public static void main( String[] args ) {
System.out.println( "Main 메소드 시작" );
// 1~10 우선권 부여
for ( int i = 1; i <= 10; i++ ) {
PriorityThread s = new PriorityThread();
s.setPriority( i );
s.start();
}
System.out.println( "Main 메소드 종료" );
}
}
스레드의 우선권을 테스트하는 예제
**/
class PriorityThread extends Thread {
public void run() {
int i = 0;
System.out.print( this.getName() ); // 스레드의 이름 출력
System.out.println( "[우선권:" + this.getPriority() + "]시작\t" );
while ( i < 100000 ) {
i++;
try {
this.sleep( 1 ); // 작업을 약간 지연 시킴, 우선권을 눈으로 확인하기 위함
} catch( Exception e ) {
System.out.println( e );
}
}
System.out.print( this.getName() );
System.out.println( "[우선권:" + this.getPriority() + "]종료\t" );
}
}
public class PriorityThreadMain {
public static void main( String[] args ) {
System.out.println( "Main 메소드 시작" );
// 1~10 우선권 부여
for ( int i = 1; i <= 10; i++ ) {
PriorityThread s = new PriorityThread();
s.setPriority( i );
s.start();
}
System.out.println( "Main 메소드 종료" );
}
}
// output
Main 메소드 시작
Thread-6[우선권:6] 시작
Thread-7[우선권:7] 시작
Thread-8[우선권:8] 시작
Thread-9[우선권:9] 시작
Thread-5[우선권:5] 시작
Thread-10[우선권:10] 시작
Main메서드종료
Thread-3[우선권:3] 시작
Thread-4[우선권:4] 시작
Thread-1[우선권:1] 시작
Thread-2[우선권:2] 시작
Thread-10[우선권:10] 종료
Thread-8[우선권:8] 종료
Thread-9[우선권:9] 종료
Thread-6[우선권:6] 종료
Thread-7[우선권:7] 종료
Thread-5[우선권:5] 종료
Thread-3[우선권:3] 종료
Thread-4[우선권:4] 종료
Thread-1[우선권:1] 종료
Thread-2[우선권:2] 종료
Main 메소드 시작
Thread-6[우선권:6] 시작
Thread-7[우선권:7] 시작
Thread-8[우선권:8] 시작
Thread-9[우선권:9] 시작
Thread-5[우선권:5] 시작
Thread-10[우선권:10] 시작
Main메서드종료
Thread-3[우선권:3] 시작
Thread-4[우선권:4] 시작
Thread-1[우선권:1] 시작
Thread-2[우선권:2] 시작
Thread-10[우선권:10] 종료
Thread-8[우선권:8] 종료
Thread-9[우선권:9] 종료
Thread-6[우선권:6] 종료
Thread-7[우선권:7] 종료
Thread-5[우선권:5] 종료
Thread-3[우선권:3] 종료
Thread-4[우선권:4] 종료
Thread-1[우선권:1] 종료
Thread-2[우선권:2] 종료
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,