Det følgende er et oversatt utdrag fra Java-dokumentasjonen (copyright Sun Microsystems)
Mange tilfeller der stop er brukt, bør erstattes av kode som rett og slett endrer en variabel slik at den indikerer at måltråden skal stoppe å kjøre.
Måltråden bør sjekke denne variabelen regelmessig og returnere fra sin run-metode på en ordnet måte hvis vaiabelen indikerer at den skal stoppe å kjøre. Hvis måltråden venter i lange perioder (for eksempel på en betingelsesvariabel), bør interrupt-metoden brukes til å avbryte ventingen.
Bruk levert 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();
}
|
|