4-2.(4) Thread의 우선순위

zhyun·2020년 9월 22일
0

HighJava

목록 보기
26/67

Thread의 우선순위

Thread 클래스에는 아래와 같이 우선순위들을 가지고 있다.

class Thread implements Runnable {
	public final static int MIN_PRIORITY = 1; //최소 우선순위
    public final static int NORM_PRIORITY = 5; //보통 우선순위
    public final static int MAX_PRIORITY = 10; //최대 우선순위
}

우선 순위는 start()메서드를 호출하기 전에 설정해야 한다.
join()을 쓰는 이유 : 프로그램 작업이 마칠때까지 mainThread가 종료되는 것을 방지하기 위해

public class T08_ThreadPriority {
	public static void main(String[] args) {
		Thread th1 = new Thread1(); // 대문자 출력
		Thread th2 = new Thread2(); // 소문자 출력
        
		th1.setPriority(Thread.MAX_PRIORITY); // = th1.setPriority(10);
        //대문자 출력 스레드에 최대 우선순위를 가지고 있어서
        //대문자+소문자+... 순으로 출력된다.
		th2.setPriority(1); //= th2.setPriority(Thread.MIN_PRIORITY);
		
		System.out.println("th1의 우선순위 : " + th1.getPriority());
        // 최대 우선순위 10
		System.out.println("th2의 우선순위 : " + th2.getPriority());
		// 최소 우선순위 1
        
		th1.start();
		th2.start();
		
		try {
			th1.join();
			th2.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		System.out.println("최대 우선순위: "+ Thread.MAX_PRIORITY);
		System.out.println("최소 우선순위: "+ Thread.MIN_PRIORITY);
		System.out.println("보통 우선순위: "+ Thread.NORM_PRIORITY);
		
		
		
	}
}        

대문자 출력하는 스레드

class Thread1 extends Thread{
	@Override
	public void run() {
		for(char ch='A'; ch<='Z'; ch++) {
			System.out.println(ch);
			
			//아무것도 하지 않는 반복문 (시간때우기용)
			for (int i = 1; i <= 1000000000L; i++) {}
		}
	}
}

소문자 출력하는 스레드

class Thread2 extends Thread{
	@Override
	public void run() {
		for(char ch='a'; ch<='z'; ch++) {
			System.out.println(ch);
			
			//아무것도 하지 않는 반복문 (시간때우기용)
			for (int i = 1; i <= 1000000000L; i++) {}
		}
	}
}
profile
HI :)

0개의 댓글