In this post, we will see Thread life cycle in Java. There are five states of a thread as below.
- New
- Runnable
- Running
- Non-Runnable (Waiting)
- Dead
New – The thread is in new state if you create an object of Thread class.
package multithreading; class Thread1 extends Thread { } public class ThreadLifeCycleExample { public static void main(String[] args) { Thread1 thread = new Thread1(); } }
Runnable – The thread is in the runnable state after the invocation of start() method, but the thread scheduler has not selected it to be the running thread.
package multithreading; class Thread1 extends Thread { } public class ThreadLifeCycleExample { public static void main(String[] args) { Thread1 thread = new Thread1(); thread.start(); } }
Running – The thread is in running state if the thread scheduler has selected it. Now run() method will be invoked.
package multithreading; class Thread1 extends Thread { public void run() { for (int i = 0; i < 5; i++) { System.out.println("Thread1 is in running state with name: - " + Thread.currentThread().getName()); } } } public class ThreadLifeCycleExample { public static void main(String[] args) { Thread1 thread = new Thread1(); thread.start(); } }
Non-Runnable (Waiting) – This is the state when the thread is in waiting state.
package multithreading; class Thread1 extends Thread { public void run() { for (int i = 0; i < 5; i++) { System.out.println("Thread1 is in running state with name: - " + Thread.currentThread().getName()); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } public class ThreadLifeCycleExample { public static void main(String[] args) throws InterruptedException { Thread1 thread = new Thread1(); thread.start(); } }
Dead- A thread is in the terminated or dead state when it’s run() method exits.