threadsafe - потокобезопасность java




В чем разница между пользовательским потоком и потоком демона в Java? (2)

JVM завершит работу после завершения последнего потока, не являющегося jvm. это означает, что если какой-либо из создаваемых вами потоков все еще работает, jvm не завершит работу. потоки демона - это потоки, которые не препятствуют завершению работы JVM. обычно вы используете их для некоторых фоновых задач, которые вы не хотите поддерживать в рабочем состоянии, если пользователь запросит его закрыть.

Кроме того, ваш вопрос уже задавался (и отвечал) здесь - Что такое нить Daemon в Java?

некоторые распространенные (из личного опыта) варианты использования для потоков демона могут включать

  • фоновые потоки, которые опрашивают удаленные системы на предмет изменения статуса
  • фоновые рабочие потоки (такие как отправка уведомлений по электронной почте, snmp и т. д.)
  • настраиваемые потоки таймера, предназначенные для выполнения запланированного обслуживания

Возможный дубликат:
Что такое поток демонов в Java
Когда нити демона полезны?

Меня смущает разница между пользовательскими потоками и потоками демонов в Java.

Можешь сказать мне:

  1. В чем разница между пользовательскими потоками и потоками демонов в Java?
  2. В какой ситуации будет использоваться поток демона? Можете ли вы дать мне несколько примеров?

Пользовательский поток - это поток, который создается приложением (пользователем), и в большинстве случаев виртуальная машина Java создает поток демона для обслуживания пользовательских потоков. Виртуальная машина различает потоки, будучи пользователем или демоном, при выходе из пользовательского потока. В случае, если пользовательский поток выходит из ВМ, проверит, работают ли какие-либо другие пользовательские потоки. Если он есть, он запланирует следующий поток (пользователь или демон). Если не запущены другие пользовательские потоки и только потоки демонов, этот экземпляр виртуальной машины также завершится.

Разница между этими двумя типами потоков проста: если среда выполнения Java определяет, что единственными потоками, работающими в приложении, являются потоки демона (т. Е. Нет пользовательских потоков), среда выполнения Java быстро закрывает приложение, фактически останавливая все потоки демонов замерли в своих следах. Чтобы приложение продолжало работать, оно всегда должно иметь хотя бы один живой пользовательский поток. Во всех других отношениях среда выполнения Java обрабатывает потоки демона и пользовательские потоки одинаково.





jvm