- 스레드 스케줄링 : 스레드의 개수가 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(Thread.MAX_PRIORITY);
thread.start();
}
}
순환 할당 방식 (Round-Robin)
- 시간 할당량(Time Slice)을 정해서 스레드를 정해진 시간만큼 실행하고 정해진 시간이 끝나면 다른 스레드를 실행하는 방식
- JVM에 의해서 정해지기 때문에 코드로 제어 X