Následující kód je vyjmut z dokumentace Java (copyright Sun Microsystems)
Mnoho použití zastavení by mělo být nahrazeno kódem, který jednoduše upravuje některou proměnnou, aby označil, že by mělo cílové vlákno zastavit spuštění.
Cílové vlákno by mělo tuto proměnnou pravidelně kontrolovat a vrátit se z metody spuštění v upravené podobě, pokud proměnná označuje, že zastaví spuštění. Pokud cílové vlákno dlouho čeká (například na stavové proměnné), měla by být pro přerušení čekání použita metoda interrupt.
Použijte poskytnutý 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( "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();
}
|
|