网站首页 > java教程 正文
介绍
Java 方法可用于将当前线程的执行暂停指定的时间(以毫秒为单位)。毫秒的参数值不能为负数。否则,它会抛出.Thread.sleep()IllegalArgumentException
sleep(long millis, int nanos)是另一种方法,可用于将当前线程的执行暂停指定的毫秒数和纳秒数。允许的纳秒值介于 0 和 999999 之间。
Thread.sleep 的工作原理
Thread.sleep()与线程调度程序交互,以使当前线程在指定的时间段内处于等待状态。等待时间结束后,线程状态将更改为可运行状态,并等待 CPU 进一步执行。当前线程休眠的实际时间取决于作为操作系统一部分的线程调度程序。
Java Thread.sleep 要点
- 它始终暂停当前线程执行。
- 线程在唤醒并开始执行之前休眠的实际时间取决于系统计时器和计划程序。对于安静的系统,实际睡眠时间接近指定的睡眠时间,但对于繁忙的系统,它会更长一点。
- Thread.sleep()不会丢失任何监视器或锁定它已获取的当前线程。
- 任何其他线程都可以在睡眠中中断当前线程,在这种情况下会被抛出InterruptedException。
Java Thread.sleep 示例
下面是一个示例程序,Thread.sleep()用于暂停主线程执行 2 秒(2000 毫秒):
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));
}
}
首先,此代码以毫秒为单位存储当前系统时间。然后它休眠 2000 毫秒。最后,此代码打印出新的当前系统时间减去以前的当前系统时间:
Output
Sleep time in ms = 2005
请注意,此差异并非精确为 2000 毫秒。这是由于线程调度程序的工作方式和特定于操作系统的实现。
结论
在本文中,您了解了 Java 的 .Thread.sleep()
猜你喜欢
- 2025-04-07 js基础之setTimeout与setInterval原理分析
- 2025-04-07 京东大佬问我,在SpringBoot中怎么使用时间轮?要考虑哪些方面?
- 2025-04-07 Java多线程系列(九):CountDownLatch...
- 2025-04-07 Java面试篇基础部分-JVM详细介绍(java面试必备 基础知识篇)
- 2025-04-07 C++ 使用Poco库的定时器(c++设置定时器)
- 2025-04-07 Netty 心跳检测(netty websocket 心跳检测)
- 2025-04-07 在 Java Spring Boot 项目中使用结构化日志节省时间
- 2025-04-07 Java-Redis(javaredis设置过期时间)
- 2025-04-07 java-jvm(一)(javajvm调优步骤)
- 2025-04-07 Java:理解和使用Java 委托事件模型
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)