java进程休眠_Java线程休眠(sleep)示例

Java中Thread.sleep()方法用于使当前线程暂停指定时间。参数不能为负,否则抛出异常。示例代码展示了如何让主线程休眠2秒。线程休眠时不会释放锁,实际休眠时间可能因系统计时器和调度器而异,并可能被其他线程中断。
摘要由CSDN通过智能技术生成

Java.lang.Thread的sleep()方法能使当前线程暂停运行一段时间(单位毫秒)。需要注意的是,sleep()方法的参数不能为负,否则会抛出IllegalArgumentException异常。

除此之外,还有另一个方法sleep(long millis, int nanos),该方法可用于使当前线程暂停millis毫秒nanos纳秒。需要注意的是,参数nanos的取值范围为[0, 999999]。

下面的代码演示如何用Thread.sleep()方法令主线程暂停执行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));

}

}

如果你运行上述程序,你会发现最后打印出来的结果会比2000略多一些,这取决于线程休眠是如何实现的,以及操作系统定义的线程调度机制。

线程休眠要点

1. 线程休眠总是暂停当前线程

2. 在被唤醒并开始执行前,线程休眠的实际时间取决于系统计时器和调度器。对比较清闲的系统来说,实际休眠的时间十分接近于指定的休眠时间,但对于繁忙的系统,两者之间的差距就较大。

3. 线程休眠并不会丢失当前线程已获取的任何监视器和锁。

4. 其他线程可以中断当前进程的休眠,但会抛出InterruptedException异常。

线程休眠的工作原理

Thread.sleep()与线程调度器交互,它将当前线程设置为等待一段时间的状态。一旦等待时间结束,线程状态就会被改为可运行(runnable),并开始等待CPU来执行后续的任务。因此,当前线程的实际休眠时间取决于线程调度器,而线程调度器则是由操作系统来进行管理的。

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值