Menu

Java Sleeping Thread

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();
        }
}
    

Output:

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());
        }
}
    

Output:

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.