Exemples Java - Surveillance de l'état des threads

Java 实例Exemples Java

L'exemple suivant montre comment surveiller l'état d'un thread en étendant la classe Thread et en utilisant la méthode currentThread.getName() :

Fichier Main.java

class MyThread extends Thread{ boolean waiting= true; boolean ready= false; MyThread() { } public void run() { String thrdName = Thread.currentThread().getName(); System.out.println(thrdName + " starting."); while(waiting) System.out.println("waiting:"+waiting); System.out.println("waiting..."); startWait(); try { Thread.sleep(1000); } catch(Exception exc) { System.out.println(thrdName + " interrompu."); } System.out.println(thrdName + " se termine."); } synchronized void startWait() { try { while(!ready) wait(); } catch(InterruptedException exc) { System.out.println("wait() interrompu"); } } synchronized void notice() { ready = true; notify(); } } public class Main { public static void main(String args[]) throws Exception{ MyThread thrd = new MyThread(); thrd.setName("MyThread #1"); showThreadStatus(thrd); thrd.start(); Thread.sleep(50); showThreadStatus(thrd); thrd.en attente = false; Thread.sleep(50); showThreadStatus(thrd); thrd.remarquez(); Thread.sleep(50); showThreadStatus(thrd); while(thrd.isAlive()) System.out.println("vivant"); showThreadStatus(thrd); } static void showThreadStatus(Thread thrd) { System.out.println(thrd.getName() + "Vivant:=" + thrd.isAlive() + " État:=" + thrd.getState()); } }

L'exécution du code ci-dessus produit la sortie suivante :

……
alive
alive
MyThread #1 terminating.
alive
……

Java 实例Exemples Java

Autres extensions