Java >> Tutoriel Java >  >> Java

Différences entre le thread utilisateur et le thread démon en Java

1) Fil d'utilisateur en Java

  • Les threads utilisateur sont également appelés threads non démons.
  • Le thread utilisateur est un thread qui s'exécute au premier plan.
  • En cas de thread utilisateur, JVM quitte une application lorsque tous les threads utilisateurs sont terminés. Il ne se soucie pas des threads démons, qu'ils soient terminés ou non (c'est-à-dire que la JVM s'arrêtera quel que soit l'état des threads démons).
  • Le fil d'utilisateur est créé par l'utilisateur.
  • JVM ne donnera la préférence à aucun thread démon dès que le thread utilisateur se terminera, il s'arrêtera.

Exemple :

Nous pouvons faire du thread utilisateur un thread démon en utilisant la méthode setDaemon(boolean). Par exemple :dans cet exemple, nous vérifions le type de thread (thread utilisateur ou démon) en utilisant la méthode isDaemon() qui renvoie true, ce qui signifie que le thread est un démon, sinon le thread n'est ni un démon ni un utilisateur.

class ChildThread extends Thread{
	public void run(){
		System.out.println("I am in ChildThread");
	}
}

class ParentThread{
	public static void main(String[] args){
		ChildThread ct = new ChildThread();
		ct.start();
		System.out.println("I am in main thread");
		System.out.println("Type of ChildThread: return true : Daemon and return false : Non-daemon " + "  " + ct.isDaemon());
		System.out.println("Type of ParentThread: return true : Daemon and return false : Non-daemon " + "  "  + Thread.currentThread().isDaemon());
	}
}

Sortie

D:\Java Articles>java ParentThread
I am in main thread
Type of ChildThread: return true : Daemon and return false : Non-daemon   false
Type of ParentThread: return true : Daemon and return false : Non-daemon   false
I am in ChildThread

2) Thread démon en Java

  • Le thread démon est un thread de service.
  • Le thread démon est un thread qui s'exécute en arrière-plan.
  • Dans le cas de Daemon, Thread JVM ne quitte pas une application tant que tous les threads utilisateurs ne sont pas terminés. Il ne se soucie pas des threads démons, qu'ils soient terminés ou non (c'est-à-dire que la JVM s'arrêtera quel que soit l'état des threads démons).
  • Le thread non-démon devient un démon sauf le thread principal en utilisant la méthode setDaemon(boolean) (la valeur booléenne peut être vraie ou fausse si elle est définie sur true, cela signifie que nous définissons le thread non-démon en tant que démon et si elle est définie sur false, cela signifie nous définissons le thread démon comme non-démon).
  • Nous pouvons vérifier qu'un thread est démon ou non démon en utilisant la méthode isDaemon().
  • JVM ne donnera la préférence à aucun thread démon dès que le thread utilisateur se terminera, il s'arrêtera.
  • Le thread démon s'exécute derrière l'application et fournit des services au thread non démon.
  • Daemon Threads :thread de gestion d'horloge, thread de mise à jour d'écran, thread de récupération de place, etc.

Exemple :

Dans cet exemple, nous faisons du thread non-démon un démon en utilisant setDeamon (booléen) mais nous ne pouvons pas changer le comportement du thread principal.

class ChildThread extends Thread{
	public void run(){
		System.out.println("child thread is a non-daemon thread");
	}
}

class MainThread{
	public static void main(String[] args){
		ChildThread ct = new ChildThread();
		System.out.println("Before using setDaemon() method "+ "  " + ct.isDaemon());
		ct.setDaemon(true);
		System.out.println("After using setDaemon() method "+ "  " + ct.isDaemon());
	}
}

Sortie

D:\Java Articles>java MainThread
Before using setDaemon() method   false
After using setDaemon() method   true

En savoir plus...

  1. Expliquer le cycle de vie d'un thread en Java.
  2. Comment créer des threads Java (exemples Java pour créer des threads) ?
  3. Synchronisation des threads en Java avec exemple.
  4. Programme Java pour montrer un exemple de thread.
  5. Programme Java pour rejoindre les discussions.

Balise Java