본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

스레드의 우선순위 setPriority()

앞서 스레드를 생성하여 start해 봤다.

https://standout.tistory.com/1421

 

스레드 구현과 실행 + 싱글쓰레드와 멀티쓰레드: start()와 run()

앞서 스레드에 대해 알아봤다. 프로세스는 공장이라면 스레드는 일꾼이라 생각하면 된다. https://standout.tistory.com/498 프로세스/스레드 방식 프로세스: 공장 스레드: 일꾼 프로세스 방식 매번 새로

standout.tistory.com

 

이때

두 개의 쓰레드가 서로 독립적으로 실행되기 때문에 
종료 메시지가 어떤 순서로 출력될지 정확히 예측할 수 없다.
종료 메시지는 실행 환경 및 운영 체제에 따라 다를 수 있다.

라는것을 알게되었는데 우선순위를 정할 수 있을까?

 

 

스레드의 우선순위는 스레드 스케줄러에게 해당 스레드가 얼마나 중요하다고 알려주는 것
우선순위는 정수 값으로 지정, 보통 1부터 10까지의 범위

`Thread.MIN_PRIORITY`는 가장 낮은 우선순위이며, `Thread.MAX_PRIORITY`는 가장 높은 우선순위이다.

public class PriorityExample {
    public static void main(String[] args) {

	//두 개의 스레드를 생성
        Thread thread1 = new Thread(new MyRunnable(), "Thread 1");
        Thread thread2 = new Thread(new MyRunnable(), "Thread 2");

        // 각 스레드의 우선순위 설정
        thread1.setPriority(Thread.MIN_PRIORITY); // 최소 우선순위
        thread2.setPriority(Thread.MAX_PRIORITY); // 최대 우선순위
	// thread1.setPriority(1); // 최소 우선순위	
	// thread2.setPriority(10); // 최대 우선순위

        // 스레드 시작
        thread1.start();
        thread2.start();
    }

    static class MyRunnable implements Runnable {
        public void run() {
            for (int i = 0; i < 5; i++) {
                System.out.println(Thread.currentThread().getName() + " is running.");
                try {
                    Thread.sleep(100); // 잠시 대기
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}