Di seguito viene riportato l'estratto della doc Java (copyright di Sun Microsystems)
L'utilizzo del comando di arresto deve essere spesso sostituito dal codice, che semplicemente modifica alcune variabili per indicare che il thread di destinazione deve arrestare l'esecuzione.
Il thread di destinazione deve verificare questa variabile regolarmente e restituire il risultato del metodo di esecuzione in modo ordinato, se la variabile indica che è necessario arrestare l'esecuzione. Se il thread di destinazione attende lunghi periodi di tempo (ad esempio, per una variabile di condizione), il metodo di interruzione deve essere utilizzato per interrompere l'attesa.
Utilizzare il comando StopSafeRunnable fornito.
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();
}
|
|