java thread.sleep单位,Java Thread Sleep

java.lang.Thread run() 方法可以使当线程进入休眠状态,时间取决于你声明的毫秒时长。此参数不可以为负数,若传入负数,程序会抛出IllegalArgumentException异常。

还有另外一个方法可以使线程休眠达到毫微秒级别 -- sleep(long mills, int nanos)。毫微秒参数的范围在0 ~ 999999之间。

下面有段例子代码展示的是在执行Thread.sleep() 代码处会让main线程进行休眠状态并持续2秒钟。

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

}

}

如果你尝试运行了上面的代码,你会发现打印出来的时间结果略微比2秒长点,造成此结果是因为线程休眠工作方式及操作系统具体执行程序的调度方式。

线程休眠的关键点

总会停止当前线程的运行。

线程从进入休眠状态到被唤醒中所花的时间取决于操作系统的统一调度。当操作系统处理任务较少的时候,这个时间会相对准确一些,而当操作系统任务多繁忙时,这个时间会花的相对多些。

线程在休眠状态时并不会丢失其获得监视器及线程锁。

任何其他线程如果打断进入休眠状态的线程,都会抛出一个InterruptedException异常。

线程休眠是如何工作的

Thread.sleep() 实际上是使线程从运行时状态转换为休眠状态,并且等待被唤醒,而唤醒时长取决你传入的时间值。一旦当等待时间结束,线程会从休眠状态转换为运行时状态,并且等待CPU在未来的某个时间点分配资源片区来执行。所以实际等待时间是由操作系统来决定的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值