Вопрос-ответ

What is a daemon thread in Java?

Что такое поток демона в Java?

Кто-нибудь может мне сказать, что такое потоки демона в Java?

Переведено автоматически
Ответ 1

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

Вы можете использовать setDaemon(boolean) метод для изменения Thread свойств демона перед запуском потока.

Ответ 2

Еще несколько моментов (Ссылка: Параллелизм Java на практике)


  • Когда создается новый поток, он наследует статус демона своего родителя.

  • Когда все потоки, не являющиеся демонами, завершаются, JVM останавливается, и все оставшиеся потоки демонов прекращаются:



    • в конечном итоге блоки не выполняются,

    • стеки не разматываются - JVM просто завершает работу.



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


Ответ 3

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

public class DaemonTest {

public static void main(String[] args) {
new WorkerThread().start();

try {
Thread.sleep(7500);
} catch (InterruptedException e) {
// handle here exception
}

System.out.println("Main Thread ending") ;
}

}

class WorkerThread extends Thread {

public WorkerThread() {
// When false, (i.e. when it's a non daemon thread),
// the WorkerThread continues to run.
// When true, (i.e. when it's a daemon thread),
// the WorkerThread terminates when the main
// thread or/and user defined thread(non daemon) terminates.
setDaemon(true);
}

public void run() {
int count = 0;

while (true) {
System.out.println("Hello from Worker "+count++);

try {
sleep(5000);
} catch (InterruptedException e) {
// handle exception here
}
}
}
}
Ответ 4

Традиционно демоническими процессами в UNIX были те, которые постоянно выполнялись в фоновом режиме, во многом как службы в Windows.

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

Ознакомились с потоками демона.

java multithreading