The following code demonstrates how to simulate the stop(), suspend(), and resume() methods of the Thread class in your thread.
public class Main extends Thread { private volatile boolean keepRunning = true; private boolean suspended = false; public synchronized void stopThread() { this.keepRunning = false;/*ww w . j a v a 2 s . c o m*/ this.notify(); } public synchronized void suspendThread() { this.suspended = true; } public synchronized void resumeThread() { this.suspended = false; this.notify(); } public void run() { System.out.println("Thread started..."); while (keepRunning) { try { System.out.println("Going to sleep..."); Thread.sleep(1000); synchronized (this) { while (suspended) { System.out.println("Suspended..."); this.wait(); System.out.println("Resumed..."); } } } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) throws Exception { Main t = new Main(); t.start(); Thread.sleep(2000); t.suspendThread(); Thread.sleep(2000); t.resumeThread(); Thread.sleep(2000); t.stopThread(); } }
The code above generates the following result.