Home/Tutorials/Java Programming/Sleeping Thread in Java

0 of 3 saved

Java Programming2 min read

Sleeping Thread in Java

Read this chapter, write the program on this page, then pass a short check to open the next one.

Java thread sleep method helps to pause execution of the program for the specified time. time can be in milliseconds, nanoseconds or both. thread sleep can raise interrupted exception.

Java Sleeping Thread

To sleep a thread for a specified time, Java provides sleep method which is defined in Thread class. The sleep method is an overloaded method which are given below. It throws interrupted exception so make sure to provide proper handler.

It always pause the current thread execution. Any other thread can interrupt the current thread in sleep, in that case InterruptedException is thrown.

Syntax

sleep(long millis)throws InterruptedException
sleep(long millis, int nanos)throws InterruptedException

Example : Sleeping a thread

In this example, we are sleeping threads by using sleep method. Each thread will sleep for 1500 milliseconds and then resume its execution. See the below example.

    
public class MyThread extends Thread
{ 
        MyThread(String str){
            super(str);
        }
    
        public void run()
        {
                System.out.println(Thread.currentThread().getName()+" Started");
                try{
                    MyThread.sleep(1500); 
                    }catch(InterruptedException ie){
                        System.out.println(ie);
                }
                System.out.println(Thread.currentThread().getName()+" Finished");
        }
        public static void main(String[] args)
        {
                MyThread t1=new MyThread("first thread");
                MyThread t2=new MyThread("second thread");
                t1.start();
                t2.start();
        }
}
    

first thread Started second thread Started first thread Finished second thread Finished

Example

    
public class MyThread extends Thread
{ 
        MyThread(String str){
            super(str);
        }
    
        public void run()
        {
                System.out.println(Thread.currentThread().getName()+" Started");
                try{
                    MyThread.sleep(1500);
                    System.out.println(Thread.currentThread().getName()+" Sleeping..");
                    }catch(InterruptedException ie){
                        System.out.println(ie);
                }
                System.out.println(Thread.currentThread().getName()+" Finished");
        }
        public static void main(String[] args)
        {
                MyThread t1=new MyThread("first thread");
                MyThread t2=new MyThread("second thread");
                System.out.println(t1.getName()+" state: "+t1.getState());
                t1.start();
                System.out.println(t1.getName()+" state: "+t1.getState());
                System.out.println(t2.getName()+" state: "+t2.getState());
                t2.start();
                System.out.println(t2.getName()+" state: "+t2.getState());
        }
}
    

first thread state: NEW first thread state: RUNNABLE second thread state: NEW first thread Started second thread state: RUNNABLE second thread Started first thread Sleeping.. second thread Sleeping.. second thread Finished first thread Finished

Thread.sleep() interacts with the thread scheduler to put the current thread in wait state for specified period of time. Once the wait time is over, thread state is changed to runnable state and wait for the CPU for further execution. So the actual time that current thread sleep depends on the thread scheduler that is part of operating system.