Seuraava on ote Java-dokumentaatiosta (tekijänoikeudet Sun Microsystemsillä)
Monet pysäytyskäskyt voi korvata koodilla, joka osoittaa kohdesäikeen ajon pysäytystarpeen muuttamalla jonkin muuttujan arvoa.
Kohdesäie on määritettävä tarkistamaan tällaisen muuttujan arvo säännöllisesti ja palaamaan ajometodista normaalisti, jos muuttujan arvo ilmaisee, että ajo on pysäytettävä. Jos kohdesäie odottaa pitkään (esimerkiksi ehtomuuttujan takia), odotus voidaan keskeyttää keskeytysmetodilla.
Käytä mukana toimitettua koodia 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();
}
|
|