threadsafe - потокобезопасность java
В чем разница между пользовательским потоком и потоком демона в Java? (2)
Возможный дубликат:
Что такое поток демонов в Java
Когда нити демона полезны?
Меня смущает разница между пользовательскими потоками и потоками демонов в Java.
Можешь сказать мне:
- В чем разница между пользовательскими потоками и потоками демонов в Java?
- В какой ситуации будет использоваться поток демона? Можете ли вы дать мне несколько примеров?
JVM завершит работу после завершения последнего потока, не являющегося jvm. это означает, что если какой-либо из создаваемых вами потоков все еще работает, jvm не завершит работу. потоки демона - это потоки, которые не препятствуют завершению работы JVM. обычно вы используете их для некоторых фоновых задач, которые вы не хотите поддерживать в рабочем состоянии, если пользователь запросит его закрыть.
Кроме того, ваш вопрос уже задавался (и отвечал) здесь - Что такое нить Daemon в Java?
некоторые распространенные (из личного опыта) варианты использования для потоков демона могут включать
- фоновые потоки, которые опрашивают удаленные системы на предмет изменения статуса
- фоновые рабочие потоки (такие как отправка уведомлений по электронной почте, snmp и т. д.)
- настраиваемые потоки таймера, предназначенные для выполнения запланированного обслуживания
Пользовательский поток - это поток, который создается приложением (пользователем), и в большинстве случаев виртуальная машина Java создает поток демона для обслуживания пользовательских потоков. Виртуальная машина различает потоки, будучи пользователем или демоном, при выходе из пользовательского потока. В случае, если пользовательский поток выходит из ВМ, проверит, работают ли какие-либо другие пользовательские потоки. Если он есть, он запланирует следующий поток (пользователь или демон). Если не запущены другие пользовательские потоки и только потоки демонов, этот экземпляр виртуальной машины также завершится.
Разница между этими двумя типами потоков проста: если среда выполнения Java определяет, что единственными потоками, работающими в приложении, являются потоки демона (т. Е. Нет пользовательских потоков), среда выполнения Java быстро закрывает приложение, фактически останавливая все потоки демонов замерли в своих следах. Чтобы приложение продолжало работать, оно всегда должно иметь хотя бы один живой пользовательский поток. Во всех других отношениях среда выполнения Java обрабатывает потоки демона и пользовательские потоки одинаково.