Thead

4 respostas
deyvid

Estava dando uma “olhada” na API e me deparei com isto “Every thread has a priority. Threads with higher priority are executed in preference to threads with lower priority. Each thread may or may not also be marked as a daemon

Não entendo o que é ou o que não é ter uma thread marca como daemon

Desde já agradeço

4 Respostas

davidtiagoconceicao

Daemons são processos/threads executados em background e geralmente são responsáveis por capturar e responder requisições de serviços. Por exemplo, pode existir um daemon para capturar requisições efetuadas ao sistema.
A classe Thread possui os métodos isDaemon() e setDaemon(boolean) para verificar e tornar uma thread um daemon.

Mais informações:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#setDaemon(boolean)

Marcelo_FS

Daemon Threads

Any Java thread can be a daemon thread. Daemon threads are service providers for other threads running in the same process as the daemon thread. For example, the HotJava browser uses up to four daemon threads named "Image Fetcher" to fetch images from the file system or network for any thread that needs one. The run() method for a daemon thread is typically an infinite loop that waits for a service request.

When the only remaining threads in a process are daemon threads, the interpreter exits. This makes sense because when only daemon threads remain, there is no other thread for which a daemon thread can provide a service.

To specify that a thread is a daemon thread, call the setDaemon method with the argument true. To determine if a thread is a daemon thread, use the accessor method isDaemon.

http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/daemon.html

Geralmente é uma Thread que fica no background esperando alguma coisa acontecer, por exemplo um Listener de conexões em um servidor (que espera uma conexão e manda pra alguém responsável). Esse tipo de thread geralmente tem um while(true) e o código de ‘espera’ fica dentro, então se você define ela como daemon, quando não houver mais nenhuma outra ela é terminada automaticamente pro seu programa não ficar num loop infinito…

ViniGodoy

O mais importante da definição, para quem programa é:
Se só deamons threads sobrarem, sua aplicação finalizará normalmente.

Se threads não deamon sobrarem, a sua aplicação continua rodando, até que essas threads finalizem, ou que um System.exit(0); seja usado.

Fabio_Kym_Nascimento

Tentando simplificar a respota: Uma thread marcada como daemon não impede a finalização do sistema, enquanto threads não marcadas como daemon forçam o sistema a aguarda-las para finalizar.

Criado 19 de novembro de 2008
Ultima resposta 19 de nov. de 2008
Respostas 4
Participantes 5