public class AlternateStop extends Object implements Runnable {
private volatile boolean stopRequested;
private Thread runThread;
public void run() {
runThread = Thread.currentThread();
stopRequested = false;
int count = 0;
while (!stopRequested) {
System.out.println("Running ... count=" + count);
count++;
try {
Thread.sleep(300);
} catch (InterruptedException x) {
// re-assert interrupt
Thread.currentThread().interrupt();
}
}
}
public void stopRequest() {
stopRequested = true;
if (runThread != null) {
runThread.interrupt();
}
}
public static void main(String[] args) {
AlternateStop as = new AlternateStop();
Thread t = new Thread(as);
t.start();
try {
Thread.sleep(2000);
} catch (InterruptedException x) {
}
as.stopRequest();
}
}
|