K-DigitalTraining 강의/1. Java

[4주차] 73. Thread, 쓰레드간의 우선순위를 높여주는 setPriority 메소드(완성)

이대곤 2022. 6. 3. 12:46

* 우선순위가 높아진다고 높아진 것만 수행되는게 아니라 이게 더 많이 먼저 수행될 가능성이 높아지는 것 뿐이다.
* 우선순위는 절대값을 비교하는게 아니라 상대적이기 때문에 1,2로 하나 9,10으로 하나 같은 결과가 나온다.

실행중 쓰레드의 우선순위를 변경해보는 코드

class Horizonal extends Thread {
	@Override
	public void run() {
		for (int i = 0; i < 300; i++) {
			System.out.print("-");
			if (i % 50 == 0)
				System.out.println();
		}
	}
}//

class Vertical extends Thread {
	@Override
	public void run() {
		for (int i = 0; i < 300; i++) {
			System.out.print("|");
			if (i % 50 == 0)
				System.out.println();
		}
	}
}//

public class Ex10_04_Thread {
	public static void main(String[] args) {
		System.out.println("프로그램 시작");

		Horizonal h = new Horizonal();
		Vertical v = new Vertical();

		h.start();
		v.start();

		// 아무런 우선순위를 정해주지 않으면 디폴트로 5순위임(우선순위: 1 ~ 10 범위), 숫자가 클수록 우선순위가 높음
		System.out.println("h의 Priority: " + h.getPriority());
		System.out.println("v의 Priority: " + v.getPriority());

		v.setPriority(7); // 설정된 우선순위를 7로 높여줌
		System.out.println("v의 Priority: " + v.getPriority());

		System.out.println("프로그램 종료");
	}
}//

실행결과

프로그램 시작
h의 Priority: 5
|-
------
|||||||||||||||||||||||||||||||||||v의 Priority: 5
|||||||||||----------||||
||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||v의 Priority: 7
|||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||-프로그램 종료
---------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
-------------------------------------------------