Поток — это отдельный объект в операционной системе,
который привязан к процессу.
После создания и инициализации поток
переходит в состояние "готовность",
занимая в своей группе приоритетности место в конце очереди.
Планировщик операционной системы в соответствии
с описанной стратегией выбирает поток,
переводя его в состояние "выполнение".
По истечении отведенного кванта времени
поток возвращается в состояние "готовность",
становясь в хвост очереди в своей группе приоритетности.
Из состояния "выполнение" поток может перейти
в другие состояния и до завершения
отведенного кванта времени.
В состояние "готовность" он может перейти,
если появился поток с большим приоритетом.
В состояние "завершение" поток переходит,
выполнив свою работу, завершив выполнение
отведенного ему фрагмента кода.
В состояние "ожидание" поток может перейти,
если его дальнейшее выполнение возможно только
после наступления некоторого события
(например, ему потребуются данные,
а устройство компьютера, выполняющее
ввод этих данных, еще не завершило свою работу).
Из состояния "ожидание" поток может перейти
в состояние "готовность", если наступило событие,
ожидаемое потоком.
За время жизни потока он многократно проходит цикл
"готовность" — "выполнение" — "ожидание" — "готовность",
иногда минуя переход в состояние "ожидания".
Так как весь процесс вычислений на компьютере
управляется событиями, каждый поток во время
своего выполнения многократно прерывается,
уступая свое место другому потоку.
События, приводящие к приостановке выполнения потока,
могут быть асинхронными по отношению к его работе, —
они могут произойти в любой момент выполнения потока.
Такие события называются прерываниями.
Синхронные события, связанные с тем,
что по тем или иным причинам выполнение потока
становится невозможным, называются исключениями
или исключительными ситуациями.
Типичными примерами исключительных ситуаций являются
такие ситуации, как попытка деления целого числа на ноль
или попытка чтения записи несуществующего файла.