Thread suspend, resume, and stop
In this chapter you will learn:
Suspend, resume, and stop a thread
Since the suspend, resume, and stop methods from Thread are all deprecated we need to use boolean value to control a thread.
The following methods define boolean variables for suspended and stopped. And we control the thread with those variables. For example, if the stop boolean is true we stop the execution of a thread by just exiting the run method.
If we want to suspend a thread we can call wait()
method also
based on the boolean suspend variable.
class MyThread implements Runnable {
Thread thrd;/*from j a v a2s .c o m*/
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();
}
}
The code above generates the following result.
Next chapter...
What you will learn in the next chapter:
Home » Java Tutorial » Thread