Mega Code Archive

 
Categories / Java / Threads
 

The safe way to stop a thread

// : c13:Stopping.java // The safe way to stop a thread. // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002 // www.BruceEckel.com. See copyright notice in CopyRight.txt. import java.util.Timer; import java.util.TimerTask; class CanStop extends Thread {   // Must be volatile:   private volatile boolean stop = false;   private int counter = 0;   public void run() {     while (!stop && counter < 10000) {       System.out.println(counter++);     }     if (stop)       System.out.println("Detected stop");   }   public void requestStop() {     stop = true;   } } public class Stopping {   public static void main(String[] args) {     final CanStop stoppable = new CanStop();     stoppable.start();     new Timer(true).schedule(new TimerTask() {       public void run() {         System.out.println("Requesting stop");         stoppable.requestStop();       }     }, 500); // run() after 500 milliseconds   } } ///:~