Suspend Resume And Stop A Thread In Java
Chapter:
Thread
Last Updated:
21-07-2016 11:07:13 UTC
Program:
/* ............... START ............... */
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 JavaThreadControl {
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();
}
}
/* ............... END ............... */
Notes:
-
In multithreaded programming you can be suspended, resumed or stopped completely based on your requirements.
- suspend() method puts a thread in suspended state and can be resumed using resume() method.
- stop() method stops a thread completely.
- resume() method resumes a thread which was suspended using suspend() method.
Tags
Suspend, Resume And Stop A Thread, Java, Thead