翻译:https://www.journaldev.com/1020/thread-sleep-java

简述

Thread .sleep()方法用来暂停当前线程的执行,以毫秒为单位。还有另一个重载方法sleep(long millis, int nanos),它可以用来暂停当前线程的执行,可以指定毫秒和纳秒,允许的纳秒值在0到999999之间

Thread.sleep()实例

以下实例是暂停当前线程2秒

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

如果你运行上面的程序,你会注意到线程睡眠时间它打印的时间略大于2000。这是由线程睡眠的工作原理和线程调度程序的操作系统的具体实现引起的。

Thread.sleep()要点

  • 它总是暂停当前线程的执行
  • 线程睡眠被唤醒继续执行的实际时间取决于系统的定时器和调度器
  • 线程睡眠期间不会放弃任何已经持有的监视器或锁
  • 任何其它线程都可以中断当前线程的睡眠,这种情况下将抛出InterruptedException异常

线程睡眠是如何工作的

thread.sleep()与线程调度程序交互,以将当前线程置于特定的时间状态。等待时间结束后,线程状态被更改为可运行状态,并等待CPU进一步执行。所以当前线程睡眠的实际时间取决于操作系统的线程调度程序

最新文章

  1. 统计Go, Go, Go
  2. SPSS数据分析—加权最小二乘法
  3. MapReduce工作原理讲解
  4. ASP.NET Misconfiguration: Missing Error Handling
  5. Delphi 时间耗时统计
  6. fbv (FrameBuffer Viewer)编译指南
  7. Discuz! X的CSS加载机制
  8. shell控制流结构笔记
  9. IntelliJ 直接编辑国际化文件(properties)方法
  10. function的粗浅理解
  11. SQL 无法打开物理文件 XXX.mdf",操作系统错误 5:"5(拒绝访问。)"
  12. NFS(网络文件系统的搭建)
  13. 间谍网络——tarjan求SCC
  14. Python冒泡算法和修改配置文件
  15. javascript 的引入
  16. CCNA
  17. Python 总结
  18. 斐波那契数列(python)
  19. [django]celery_redis探索
  20. js-template-art【二】语法

热门文章

  1. MyBatis 源码篇-Transaction
  2. 怎样获取不同环境下的document对象
  3. WindowsAPI操作串口
  4. 安卓开发之利用XmlSerializer生成XML文件
  5. eclipse svn 插件离线安装后connector获取不到的问题解决
  6. 80C51串行口
  7. python多继承下的查找顺序-MRO原则演变与C3算法
  8. Junit5常用注解
  9. django的几种缓存配置
  10. vim技巧总结