Sleep method of java.lang.Thread
is used to pause current execution of thread
for specific period of time.
Some important points about sleep method are :
- It causes current executing thread to sleep for specific amount of time.
- Its accuracy depends on
system timers and schedulers
. - It keeps the monitors it has acquired, so if it is called from
synchronized
context, no other thread can enter that block or method. - If we call
interrupt()
method , it will wake up the sleeping thread.
1 2 3 4 5 6 |
synchronized(lockedObject) { Thread.sleep(1000); // It does not release the lock on lockedObject. // So either after 1000 miliseconds, current thread will wake up, or after we call //t. interrupt() method. |
FirstThread.java
as below.
1 2 3 4 5 6 7 8 9 10 11 12 |
package org.arpit.java2blog.thread; public class FirstThread implements Runnable{ public void run() { System.out.println("Thread is running"); } } |
Create main class named ThreadSleepExampleMain.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package org.arpit.java2blog.thread; public class ThreadSleepExampleMain { public static void main(String args[]) { FirstThread ft= new FirstThread(); Thread t=new Thread(ft); t.start(); long startTime=System.currentTimeMillis(); try { // putting thread on sleep Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } long endTime=System.currentTimeMillis(); long timeDifference=(endTime-startTime); System.out.println("Time difference between before and after sleep call: "+timeDifference); } } |
When you run above program, you will get following output.
Time difference between before and after sleep call: 1001
You can see there is a delay of 1000 milliseconds (1 sec). As mentioned earlier, its accuracy depends on system timers and schedulers.
How Thread Sleep Works
Thread.sleep()
works with thread scheduler to pause current thread execution for specific period of time. Once thread wait period is over, the thread’s state is changed to runnable again and it is available for further execution for CPU.
That’s all about Java Thread Sleep Example