Thread State In Java Example
Chapter:
Thread
Last Updated:
16-06-2017 09:07:23 UTC
Program:
/* ............... START ............... */
public class JavaThreadState extends Thread {
private volatile boolean keepRunning = true;
private boolean suspended = false;
public synchronized void stopThread() {
this.keepRunning = false;
}
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 {
JavaThreadState t = new JavaThreadState();
t.start();
Thread.sleep(2000);
t.suspendThread();
Thread.sleep(2000);
t.resumeThread();
Thread.sleep(2000);
t.stopThread();
}
}
/* ............... END ............... */
Output
Thread started...
Going to sleep...
Going to sleep...
Suspended...
Resumed...
Going to sleep...
Going to sleep...
Notes:
-
The life cycle of the thread in java is controlled by JVM.
- The java thread states are as follows: New,Runnable,Running,Non-Runnable (Blocked),Terminated.
- The thread is in new state if you create an instance of Thread class but before the invocation of start() method.
- The thread is in runnable state after invocation of start() method, but the thread scheduler has not selected it to be the running thread.
- A thread is in terminated or dead state when its run() method exits.
Tags
Thread State, Java