Какая разница между потоком пользователя и потоком демона в java? - программирование
Подтвердить что ты не робот

Какая разница между потоком пользователя и потоком демона в java?

Возможный дубликат:
Что такое поток Daemon в java
Когда используются потоки демона?

Я путаюсь с разницей между user threads и daemon threads в Java.

Можете ли вы сказать мне:

  • В чем разница между user threads и daemon threads в java?
  • В какой ситуации daemon thread будет использоваться? Можете ли вы привести несколько примеров?

Кто-нибудь может ответить на вопрос 2?

4b9b3361

Ответ 1

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

ваш вопрос уже был задан (и ответил) здесь - Что такое поток Daemon в Java?

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

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

Ответ 2

Второй вопрос:

Потоки Daemon автоматически прекращаются, когда все нормальные потоки завершены.

Вы можете использовать потоки демона для выполнения некоторых операций по уборке или уборке в вашем приложении. Потоки Daemon используются для поддержки фоновых задач и необходимы только при выполнении обычных потоков. GC thread - это поток демона.

Ответ 3

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

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