Терминология о теме - PullRequest
0 голосов
/ 19 июля 2009

Если функция в потоке собирается возвращаться, как мы можем описать это поведение.

  1. Тема возвращается.

  2. Нить умирает.

Что означает "нить мертва"?

Ответы [ 3 ]

1 голос
/ 19 июля 2009

Начиная с Java 1.3 была представлена ​​модель с шестью состояниями. Это включает в себя следующие состояния:

  1. Готов к запуску : поток создан и ожидает выбора для запуска планировщиком потока
  2. Выполнение : поток выполняется.
  3. Ожидание : Поток находится в заблокированном состоянии, ожидая завершения какой-либо внешней обработки (например, ввода-вывода).
  4. Спящий : поток вынужден спать через .sleep()
  5. Заблокировано : Вкл. Ввод / вывод : переместится в состояние 1 после завершения (например, чтение байта данных). При синхронизации : переходит в состояние 1 после получения блокировки.
  6. Мертвый ( Завершено ): Нить завершила работу и не может быть возобновлена.

Термин «мертвый» сегодня используется редко, почти полностью заменен на «уничтожен». Эти два эквивалентны.

1 голос
/ 19 июля 2009

В моем понимании потоки - это в основном структуры данных ядра. Вы можете создавать и уничтожать потоки через системные API. Если вы просто создаете поток, запускаете его выполнение, и в нем заканчивается код, ядро, вероятно, переведет его в состояние без выполнения. В неуправляемом коде вам все еще нужно освободить этот ресурс.

Тогда есть пул потоков. В этом случае вы ставите в очередь работу, выполняемую пулом потоков, а платформа заботится о выборе потока и выполнении вашей работы. Когда работа завершена, поток возвращается в пул потоков. Платформа заботится о создании и уничтожении потоков, чтобы сбалансировать доступные потоки с рабочей нагрузкой и системными ресурсами.

0 голосов
/ 19 июля 2009

Большинство потоковых API работают, запрашивая у операционной системы определенную функцию, предоставленную вами, от вашего имени. Когда эта функция в конечном итоге возвращает (например, с помощью оператора return или достигает конца своего кода), операционная система завершает поток.

Что касается "мертвых" потоков - я не видел этот термин в API потоков.

...