Exemples Java - Surveillance de l'état des threads
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 ……Autres extensions
Exemples Java