Het volgende is een uittreksel uit de Java-documentatie (copyright van Sun Microsystems)
Veel van het gebruik van stop moet vervangen worden door code die een variabele gewoon wijzigt om aan te geven dat de uitvoering van de doelthread stopgezet moet worden.
De doelthread moet deze variabele regelmatig controleren en netjes terugkeren uit de run-methode als de variabele aangeeft dat de uitvoering moet worden stopgezet. Als de doelthread lange perioden wacht (bijvoorbeeld op een voorwaardevariabele), moet u de methode interrupt() gebruiken om het wachten te onderbreken.
Gebruik de verstrekte klasse StopSafeRunnable.
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( "Hallo wereld" );
try { Thread.sleep( 1000 ); } catch (InterruptedException e) {}
}
};
Thread thread = new Thread( runnable );
thread.start();
try { Thread.sleep( 3000 ); } catch (InterruptedException e) {}
runnable.stop();
}
|
|