Операционная среда этого руководства: система Windows 7, версия Java 10, компьютер DELL G3.
1. Новое : в этом состоянии находятся потоки, которые не были запущены после создания.
2. Runnable : включает в себя состояния «Выполняется» и «Готов» в состоянии потока операционной системы. То есть поток в этом состоянии может выполняться или ожидать, пока операционная система выделит ему время выполнения.
3. Ожидание : потокам в этом состоянии не будет выделено время выполнения процессора. Им придется ждать, пока другие потоки явно не пробудят их. Следующий метод приведет к переводу потока в состояние ожидания:
Метод Object::wait() не устанавливает параметр Timeout;
Метод Thread::join() без установки параметра Timeout;
Метод LockSupport::park().
4. Ожидание по времени : потокам в этом состоянии не будет выделяться время выполнения процессора, но им не нужно ждать явного пробуждения другими потоками. Они будут автоматически пробуждаться системой через определенный период времени. Следующий метод переведет поток в состояние ожидания крайнего срока:
Метод Object::wait() с установленным параметром Timeout;
Метод Thread::join() с установленным параметром Timeout;
Метод LockSupport::parkNanos();
LockSupport::parkUntil().
5. Заблокировано : поток заблокирован. Разница между «состоянием блокировки» и «состоянием ожидания» заключается в том, что «состояние блокировки» ожидает получения эксклюзивной блокировки. Это событие произойдет, когда другой поток откажется от блокировки. «состояние ожидания» предполагает ожидание в течение определенного периода времени или выполнения действия пробуждения. Поток перейдет в это состояние, пока программа ожидает входа в область синхронизации.
6. Завершено : состояние завершенного потока, выполнение потока завершилось.
Выше приведены шесть состояний потоков Java. Надеюсь, они могут быть полезны каждому.
Еще руководство по изучению Java: учебник по Java