L'extrait suivant est tiré de la documentation Java doc (copyright Sun Microsystems)
L'utilisation répétée de 'stop' est déconseillée et doit être remplacée par du code modifiant simplement une variable pour indiquer d'arrêter l'exécution de l'unité d'exécution.
L'unité d'exécution cible doit vérifier cette variable régulièrement, pour revenir méthodiquement sur sa méthode d'exécution si la variable indique qu'elle doit s'arrêter. Si l'unité d'exécution cible attend longtemps (sur une variable de condition, par exemple), la méthode d'interruption doit être employée pour mettre fin à cette attente.
Utilisez l'élément StopSafeRunnable indiqué.
public static abstract class StopSafeRunnable implements Runnable {
public final void run() {
while ( !stopped ) {
doRun();
}
}
public void stop() {
stopped = true;
}
public boolean isStopped() {
return stopped;
}
protected abstract void doRun();
private boolean stopped = false;
}
public static void main(String[] args) {
StopSafeRunnable runnable = new StopSafeRunnable() {
public void doRun() {
System.out.println( "Hello World" );
try { Thread.sleep( 1000 ); } catch (InterruptedException e) {}
}
};
Thread thread = new Thread( runnable );
thread.start();
try { Thread.sleep( 3000 ); } catch (InterruptedException e) {}
runnable.stop();
}
|
|