Java线程休眠Thread.sleep()(2)

本文介绍了Java中Thread.sleep()方法的基本用法及其注意事项。该方法可以暂停当前线程的执行,参数为毫秒值。文章通过示例程序展示了如何使用Thread.sleep()使线程暂停2000毫秒,并讨论了实际休眠时间和指定时间可能存在的差异。
部署运行你感兴趣的模型镜像

源地址 https://www.journaldev.com/1020/thread-sleep-java  作者 Pankaj 

Java中Thread.sleep

Thread.sleep()方法能够已毫秒为时间单位暂停当前执行的线程,参数值为毫秒不能为负数,否则将抛出IllegalArgumentException异常。


这里有另一个重载的方法sleep(long millis,int nanos)能够被使用暂停当前的线程以指定毫秒和纳米,允许的纳米值为0到999999.

Java Thread sleep示例

这里是一个简单的程序,它使用Thread.sleep()暂停主线程2分钟。

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毫秒,导致线程这样执行的原因是操作系统具体实现和线程调度引起的。

Java线程休眠要点:

1.它总是暂停当前执行的线程

2.实际休眠的线程在唤醒开始执行前依赖于系统定时器和调度器,对于一个平稳的系统来住,线程实际执行的时间接近于指定线程休眠时间,但是对于一个忙碌的系统来说它将稍微超出一些。

3.当线程休眠时不会丢失已经获得的监控和锁。

4.任何线程都能中断当前休眠的线程,将导致InterruptedException异常抛出。

线程休眠是如何工作的

Thread.sleep()与线程调度器交互,在指定的时间内将当前线程作为等待状态放入,一旦等待时间结束后,线程状态变为可运行状态,并等待CPU进一步执行。所以当前线程的实际休眠时间依赖于线程调度器和一部门操作系统。


您可能感兴趣的与本文相关的镜像

GPT-SoVITS

GPT-SoVITS

AI应用

GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果

<think>我们被要求提供一个在Java中使用Thread.sleep方法让线程休眠1分钟的具体实现示例。根据引用内容,我们知道Thread.sleep的基本用法,也了解到有更优雅的方式(如使用TimeUnit),但用户明确要求使用Thread.sleep方法。注意:Thread.sleep方法接受毫秒数。要让线程休眠1分钟,我们需要将分钟转换为毫秒。1分钟=60秒,1秒=1000毫秒,因此1分钟=60*1000=60000毫秒。因此,我们可以这样写:Thread.sleep(60000);同时,我们也注意到Thread.sleep方法会抛出InterruptedException,所以我们需要处理这个异常(通常使用try-catch)。根据引用[1]中的示例,我们可以编写一个简单的程序来演示休眠60秒。我们将编写一个类,在休眠前后打印当前时间,以展示休眠效果。示例代码如下:</think>在 Java 中使用 `Thread.sleep()` 方法实现线程休眠 60 秒的示例如下: ```java public class SleepExample { public static void main(String[] args) { System.out.println("休眠开始时间: " + new java.util.Date()); try { // 休眠60秒(60,000毫秒) Thread.sleep(60 * 1000); } catch (InterruptedException e) { System.err.println("休眠被中断: " + e.getMessage()); } System.out.println("休眠结束时间: " + new java.util.Date()); } } ``` ### 关键说明: 1. **时间单位转换** 休眠时间需以**毫秒**为单位,`60 秒 = 60,000 毫秒`,通过 `60 * 1000` 实现单位转换。 2. **异常处理** `Thread.sleep()` 必须处理 `InterruptedException`,当其他线程中断当前休眠时会触发此异常[^1][^2]。 3. **执行效果** 程序将: - 打印开始休眠的时间戳 - 暂停执行 60 秒 - 打印结束休眠的时间戳 > ⚠️ **注意**:对于更可读的时间单位处理,建议使用 `TimeUnit`(需 Java 5+): > ```java > TimeUnit.SECONDS.sleep(60); // 语义更清晰 > ``` > 其底层仍调用 `Thread.sleep()`,但自动处理时间单位转换[^3][^5]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值