Ответ
Thread Scheduler (Планировщик потоков) — это компонент JVM (часто делегирующий задачу операционной системе), который решает, какой из Runnable-потоков должен выполняться в данный момент на доступном процессорном ядре.
Ключевые принципы:
- Не гарантирует порядок или справедливость. Выполнение непредсказуемо и зависит от реализации JVM и ОС.
- Использует приоритеты потоков (1-10). Потоки с более высоким приоритетом (
Thread.MAX_PRIORITY) с большей вероятностью будут выбраны для выполнения, но это лишь рекомендация, а не строгое правило. - Работает по принципу вытесняющей многозадачности (Preemptive Multitasking). Поток может быть приостановлен в любой точке выполнения.
Пример, демонстрирующий непредсказуемость:
Thread t1 = new Thread(() -> System.out.println("Thread 1"));
Thread t2 = new Thread(() -> System.out.println("Thread 2"));
t1.start();
t2.start();
// Порядок вывода "Thread 1" и "Thread 2" может быть любым
Для контроля порядка используйте механизмы синхронизации:
Thread.join()для ожидания завершения потока.synchronized,Lock.- Высокоуровневые инструменты:
ExecutorService,CompletableFuture.