Home Java Thread Life Cycle of Threads
Questions:Ask|Latest

 
 

Share on Google+Share on Google+

Life Cycle of Threads

Advertisement
This section you will see the life cycle of thread in java.

Life Cycle of A Thread

     

When you are programming with threads, understanding the life cycle of thread is very valuable. While a thread is alive, it is in one of several states. By invoking start() method, it doesn?t mean that the thread has access to CPU and start executing straight away. Several factors determine how it will proceed.

Different states of a thread are :

Advertisement
  1. New state ? After the creations of Thread instance the thread is in this state but before the start() method invocation. At this point, the thread is considered not alive.
     
  2. Runnable (Ready-to-run) state ? A thread start its life from Runnable state. A thread first enters runnable state after the invoking of start() method but a thread can return to this state after either running, waiting, sleeping or coming back from blocked state also. On this state a thread is waiting for a turn on the processor. 
     
  3. Running state ? A thread is in running state that means the thread is currently executing. There are several ways to enter in Runnable state but there is only one way to enter in Running state: the scheduler select a thread from runnable pool.
     
  4. Dead state ? A thread can be considered dead when its run() method completes. If any thread comes on this state that means it cannot ever run again.
  5. Blocked - A thread can enter in this state because of waiting the resources that are hold by another thread.

Different states implementing Multiple-Threads are:

As we have seen different states that may be occur with the single thread. A running thread can enter to any non-runnable state, depending on the circumstances. A thread cannot enters directly to the running state from non-runnable state, firstly it goes to runnable state. Now lets understand the some non-runnable states which may be occur handling the multithreads.
  • Sleeping ? On this state, the thread is still alive but it is not runnable, it might be return to runnable state later, if a particular event occurs. On this state a thread sleeps for a specified amount of time. You can use the method sleep( ) to stop the running state of a thread.
      
       static void sleep(long millisecond) throws InterruptedException
  • Waiting for Notification ? A thread waits for notification from another thread. The thread sends back to runnable state after sending notification from another thread.
     
       final void wait(long timeout) throws InterruptedException
       final void wait(long timeout, int nanos) throws InterruptedException
       final void wait() throws InterruptedException

     
  • Blocked on I/O ? The thread waits for completion of blocking operation. A thread can enter on this state because of waiting I/O resource. In that case the thread sends back to runnable state after availability of resources.
     
  • Blocked for joint completion ? The thread can come on this state because of waiting the completion of another thread.
      
  • Blocked for lock acquisition ? The thread can come on this state because of waiting to acquire the lock of an object.

 Methods that can be applied apply on a Thread:

Some Important Methods defined in java.lang.Thread are shown in the table:

 Method  Return Type  Description
 currentThread( )  Thread  Returns an object reference to the thread in which it is invoked.
 getName( )  String  Retrieve the name of the thread object or instance.
 start( )  void  Start the thread by calling its run method.
 run( )  void  This method is the entry point to execute thread, like the main method for applications.
 sleep( )  void  Suspends a thread for a specified amount of time (in milliseconds).
  isAlive( )  boolean  This method is used to determine the thread is running or not.
 activeCount( )  int  This method returns the number of active threads in a particular thread group and all its subgroups.
 interrupt( )  void  The method interrupt the threads on which it is invoked.
 yield( )  void  By invoking this method the current thread pause its execution temporarily and allow other threads to execute.
 join( )  void  This method and  join(long millisec) Throws InterruptedException.  These two methods are invoked on a thread. These are not returned until either the thread has completed or it is timed out respectively.

 

  

   

Advertisement

If you enjoyed this post then why not add us on Google+? Add us to your Circles



Liked it!  Share this Tutorial


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: April 17, 2007

Related Tutorials

Ask Questions?    Discuss: Life Cycle of Threads   View All Comments

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments
sivadeepak
April 14, 2011
java

easy to learn english.
Anuj Pratap Singh
November 11, 2011
Threading

Can we Stop a thread by own method/logic ?
sunilkanth
December 10, 2011
java

what is marker interface? What is the necessity of marker interface? Some says marker interface doesn't contain methods at all and some says it consists methods in some cases. which is true?
attaullah afridi
January 20, 2012
bs(infornation teachnology)

i have a problam in java from bigening so how learn it and so clear my concept plz
julien brightside
April 4, 2012
Useful

I found this quite useful. A summary of just what I was looking for.
Surajit Haldar
May 10, 2012
java

it's really very helpfull.
ranakchowdhury
May 25, 2012
java

what is life cycle of thread?
raalakshmi
June 20, 2012
good

The explanation of life cycle of thread is easy to understand..
gopi
June 29, 2012
life cycle of thread

whats its performance
vb
October 12, 2012
java

good
In Dovahkiin
November 21, 2012
Manifestation

How does this life cycle manifest itself in programming code? If anyone can hel[ great.
Alshay Sahu
November 29, 2012
Incorrect diagram

Please correct the thread life cycle diagram. A thread can enter into RUNNING state only from RUNNABLE state but not from BLOCKED state. The diagram above says that WAITING and RUNNING states communicate with each other. But the fact is, A Thread can enter WAITING state from RUNNING state but not the vice-versa.
bhagyalakshmi
May 5, 2013
thread

no coomment
DMCA.com