O código a seguir é a extração de Java doc (copyright da Sun Microsystems)
Vários usos de stop devem ser substituídos pelo código que simplesmente modifica alguma variável para indicar que o encadeamento de
destino deve ter sua execução parada.
O encadeamento de destino deve verificar essa variável regularmente e retornar de seu método de execução de modo ordenado se a variável
indicar que a execução deve ser parada. Se o encadeamento de destino aguardar por longos períodos (em uma variável de condição, por
exemplo), o método de interrupção deve ser utilizado para interromper a espera.
Utilize o StopSafeRunnable fornecido.
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();
}
|
|