Mega Code Archive

 
Categories / Java / Threads
 

Suspend, resume, and stop a thread

class MyThread implements Runnable {   Thread thrd;   boolean suspended;   boolean stopped;   MyThread(String name) {     thrd = new Thread(this, name);     suspended = false;     stopped = false;     thrd.start();   }   public void run() {     try {       for (int i = 1; i < 10; i++) {         System.out.print(".");         Thread.sleep(50);         synchronized (this) {           while (suspended)             wait();           if (stopped)             break;         }       }     } catch (InterruptedException exc) {       System.out.println(thrd.getName() + " interrupted.");     }     System.out.println("\n" + thrd.getName() + " exiting.");   }   synchronized void stop() {     stopped = true;     suspended = false;     notify();   }   synchronized void suspend() {     suspended = true;   }   synchronized void resume() {     suspended = false;     notify();   } } public class Main {   public static void main(String args[]) throws Exception {     MyThread mt = new MyThread("MyThread");     Thread.sleep(100);     mt.suspend();     Thread.sleep(100);     mt.resume();     Thread.sleep(100);     mt.suspend();     Thread.sleep(100);     mt.resume();     Thread.sleep(100);     mt.stop();   } }