Sleep method in java

Thread.sleep() method can be used to pause the execution of current thread for specified time in milliseconds. The argument value for milliseconds can’t be negative, else it throws IllegalArgumentException.

There is another overloaded method sleep(long millis, int nanos) that can be used to pause the execution of current thread for specified milliseconds and nanoseconds. The allowed nano second value is between 0 and 999999.

Syntax of sleep() method in java

The Thread class provides two methods for sleeping a thread:

  • public static void sleep(long miliseconds)throws InterruptedException

  • public static void sleep(long miliseconds, int nanos)throws InterruptedException

Example of sleep method in java
class Test extends Thread{ public void run() { for(int i=1;i<5;i++) { try{Thread.sleep(500);}catch(InterruptedException e){ System.out.println(e); } System.out.println(i); } } public static void main(String args[]) { Test t1=new Test(); Test t2=new Test(); t1.start(); t2.start(); } }

1 1 2 2 3 3 4 4

As you know well that at a time only one thread is executed. If you sleep a thread for the specified time,the thread shedular picks up another thread and so on.

Java Thread Sleep important points
  1. It always pause the current thread execution.

  2. The actual time thread sleeps before waking up and start execution depends on system timers and schedulers. For a quiet system, the actual time for sleep is near to the specified sleep time but for a busy system it will be little bit more.

  3. Thread sleep doesn’t lose any monitors or locks current thread has acquired.

  4. Any other thread can interrupt the current thread in sleep, in that case InterruptedException is thrown.

How Thread Sleep Works

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.