Thread 스케줄링

조상원·2025년 8월 2일

JAVA

목록 보기
29/34
  • 스레드 스케줄링 : 스레드의 개수가 CPU 코어의 수보다 많을 경우, 스레드를 어떤 순서에 의해서 동시성으로 실행할 것인가를 결정하는 것
  • 동시성 : 하나의 CPU 코어에서 멀티 스레드가 번갈아가며 실행하는 성질
  • 병렬성 : CPU 멀티 코어에서 개별 스레드를 동시에 실행하는 성질
  • 스레드 스케줄링은 우선순위(Priority) 방식과 순환 할당(Round-Robin) 방식을 사용

우선순위 방식 (Priority)

  • 우선순위가 높은 스레드가 실행 상태를 더 많이 가지도록 스케줄링하는 방식
  • 우선순위 방식에서 우선순위는 1 ~ 10까지 부여되는데 1이 가장 낮고 10이 가장 높다. (default: 5)
public class Application {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runable() {
                
            @Override
            public void run() {
                // 작업 스레드에서 실행할 코드
                ...
            }
        });

        // thread.setPriority(1);
        // thread.setPriority(Thread.MIN_PRIORITY); // 1
        // thread.setPriority(Thread.NORM_PRIORITY); // 5
        thread.setPriority(Thread.MAX_PRIORITY); // 10

        thread.start();
    }
}

순환 할당 방식 (Round-Robin)

  • 시간 할당량(Time Slice)을 정해서 스레드를 정해진 시간만큼 실행하고 정해진 시간이 끝나면 다른 스레드를 실행하는 방식
  • JVM에 의해서 정해지기 때문에 코드로 제어 X

0개의 댓글