【Java多线程】之二:Java Thread Sleep Example
2015-08-09 09:53
411 查看
java.lang.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 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.
Here is a simple program where Thread.sleep() is used to pause the main thread execution for 2 seconds.
ThreadSleep.java
If you will run the above program, you will notice that the sleep time it prints is slightly greater than 2000 and caused by how thread sleep works and operating system specific implementation of thread scheduler.
Thread Sleep important points
It always pause the current thread execution.
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.
Thread sleep doesn’t lose any monitors or locks current thread has acquired.
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.
There is another 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.
Here is a simple program where Thread.sleep() is used to pause the main thread execution for 2 seconds.
ThreadSleep.java
package com.journaldev.threads; public class ThreadSleep { public static void main(String[] args) throws InterruptedException { long start = System.currentTimeMillis(); Thread.sleep(2000); System.out.println("Sleep time in ms = "+(System.currentTimeMillis()-start)); } }
If you will run the above program, you will notice that the sleep time it prints is slightly greater than 2000 and caused by how thread sleep works and operating system specific implementation of thread scheduler.
Thread Sleep important points
It always pause the current thread execution.
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.
Thread sleep doesn’t lose any monitors or locks current thread has acquired.
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.
相关文章推荐
- webservice之jdk自带wsimport
- Java心得9
- Ubuntu 15.04安装jdk7
- Java之String 字符串
- 廖雪峰javascrip学习笔记<进阶>
- Java内存模型的历史变迁
- 廖雪峰javascrip学习笔记<基础>
- MyEclipse10安装SVN插件
- Java与其他语言的对比
- Java学习笔记------------如何启用jre包中的:sun.net.ftp
- java多线层同时运行的解决,同步代码块synchronized
- Java中使用Log4j记录日志
- 如何用Java构建FTP服务器
- Java构建FTP服务器
- JavaBeans的使用
- Java中的Nested Classes和Inner Classes
- 正则化—Java中Split函数的用法技巧_(转载修改)
- Java中getResourceAsStream的用法(转载)
- 智渔课堂官方免费教程一:Java软件开发预备知识
- SpringMVC 整合 AOP 及事务不生效的解决办法