854 votes

Ce qui est fil Daemon en java

Quelqu'un peut-il me dire quel démon threads sont en Java ?

661voto

b_erb Points 8869

Un thread de démon est un thread, ce qui n’empêche pas la JVM de sortie lorsque le programme se termine, mais le thread s’exécute toujours. Un exemple pour un thread de démon est le garbage collection.

Vous pouvez utiliser le méthode pour changer la Propriétés de démon.

351voto

sateesh Points 7967

Quelques points de plus (Référence: Java Simultanéité dans la Pratique)

  • Lorsqu'un nouveau thread est créé, il hérite du démon statut de ses parents.
  • Normal fil et les fils de démon diffèrent de ce qui se passe quand ils sortent. Lorsque la machine s'arrête tout en restant fils de démon sont abandonnés: **enfin, les blocs ne sont pas exécutées**, les piles ne sont pas dénouées - JVM sorties seulement. Pour cette raison, les fils de démon doit être utilisée avec parcimonie et il est dangereux de les utiliser pour des tâches que peut effectuer toute sorte d'I/O.

193voto

russ Points 591

Toutes les réponses ci-dessus sont bonnes. Voici un extrait de code simple peu, pour illustrer la différence. Essayez-le avec chacune des valeurs true et false dans `` .

102voto

cletus Points 276888

Je pense que tu veux dire "démon" plutôt que de "démon". Traditionnellement démon des processus dans UNIX étaient ceux qui étaient constamment en cours d'exécution en arrière-plan, comme dans beaucoup de services dans Windows.

Un démon thread en Java est un qui n'empêche pas la JVM de sortie. Plus précisément la JVM d'une sortie de lorsque seuls les fils de démon rester. Vous pouvez en créer une en appelant l' setDaemon() méthode Thread.

Avoir une lecture de fils de Démon.

57voto

Sreekesh Okky Points 3283

Les fils de démon, sont comme des fournisseurs de services pour d'autres threads ou des objets exécutant dans le même processus que le fil de démon. Les fils de démon sont utilisés pour le fond d'appui à des tâches et ne sont nécessaires que bien que normale threads en cours d'exécution. Si les threads ne sont pas en cours d'exécution et autres threads sont les fils de démon alors que l'interprète de sorties.

Par exemple, le navigateur HotJava utilise jusqu'à quatre fils de démon nommé "l'Image de l'outil de récupération" pour récupérer des images à partir du fichier système ou d'un réseau pour n'importe quel thread qui en a besoin.

Les fils de démon sont généralement utilisés pour exécuter des services pour votre application/applet (telles que le chargement de la "fiddley bits"). La principale différence entre les threads utilisateur et les fils de démon, c'est que la JVM ne fermer un programme, lorsque tous les threads utilisateur est terminée. Les fils de démon sont terminées par la JVM quand il n'y a plus n'importe quel utilisateur de threads en cours d'exécution, y compris le thread principal d'exécution.

setDaemon(vrai/faux) ? Cette méthode est utilisée pour spécifier qu'un fil est fil de démon.

public boolean isDaemon() ? Cette méthode est utilisée pour déterminer le fil est fil de démon ou pas.

Par exemple:

public class DaemonThread extends Thread {
    public void run() {
        System.out.println("Entering run method");

        try {
            System.out.println("In run Method: currentThread() is" + Thread.currentThread());

            while (true) {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException x) {}

                System.out.println("In run method: woke up again");
            }
        } finally {
            System.out.println("Leaving run Method");
        }
    }
    public static void main(String[] args) {
        System.out.println("Entering main Method");

        DaemonThread t = new DaemonThread();
        t.setDaemon(true);
        t.start();

        try {
            Thread.sleep(3000);
        } catch (InterruptedException x) {}

        System.out.println("Leaving main method");
    }

}

Sortie:

C:\java\thread>javac DaemonThread.java

C:\java\thread>java DaemonThread
Entering main Method
Entering run method
In run Method: currentThread() isThread[Thread-0,5,main]
In run method: woke up again
In run method: woke up again
In run method: woke up again
In run method: woke up again
In run method: woke up again
In run method: woke up again
Leaving main method

C:\j2se6\thread>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X