Thread.sleep( )线程休眠的优化写法

TimeUnit.SECONDS.sleep(10)Thread.sleep(10 * 1000)都可以用于线程休眠

代码如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.TimeUnit;
/**
 * @program: moon-cloud-car
 * @author: 阿水
 * @create: 2023-05-29 12:08
 **/

public class Test {
    public static void main(String[] args) throws InterruptedException {
        // 获取当前时间
        LocalDateTime beginTime = LocalDateTime.now();
        // 定义日期时间格式
        DateTimeFormatter beginFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 格式化当前时间
        String beginTimeStr = beginTime.format(beginFormatter);
        // 输出当前年月日时分秒
        System.out.println("开始时间:" + beginTimeStr);
        TimeUnit.SECONDS.sleep(5);
        // 获取当前时间
        LocalDateTime endTime = LocalDateTime.now();
        // 定义日期时间格式
        DateTimeFormatter endFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 格式化当前时间
        String endTimeStr = endTime.format(endFormatter);
        System.out.println("结束时间:" + endTimeStr);

    }
}

他们都会抛出的异常是InterruptedException需要进行适当的异常处理。但它们有一些区别。

单位表示:

  • TimeUnit.SECONDS.sleep(10)中的TimeUnit.SECONDS表示等待时间的单位是秒。

  • Thread.sleep(10 * 1000)中的10 * 1000表示等待时间的单位是毫秒。

代码可读性:

  • TimeUnit.SECONDS.sleep(10)更直观地表达了等待时间是10秒。

  • Thread.sleep(10 * 1000)需要进行乘法运算,并且单位是毫秒,可读性稍差一些。

单位转换:

  • TimeUnit.SECONDS.sleep(10)直接使用秒作为单位,无需手动进行单位转换。

  • Thread.sleep(10 * 1000)需要将秒转换为毫秒进行计算。

综上所述,TimeUnit.SECONDS.sleep(10)在可读性和代码清晰性方面略胜一筹,而Thread.sleep(10 * 1000)则需要手动进行单位转换,并且可读性稍差。两者在功能上是等效的,选择使用哪种方式取决于个人偏好和代码风格。

如果您想使用其他时间单位进行休眠,可以使用 TimeUnit 类中提供的其他时间单位常量,例如:

  • TimeUnit.MILLISECONDS.sleep(1000):表示休眠 1000 毫秒(1 秒)。
  • TimeUnit.MINUTES.sleep(5):表示休眠 5 分钟。
  • TimeUnit.HOURS.sleep(2):表示休眠 2 小时。
  • TimeUnit.DAYS.sleep(1):表示休眠 1 天。

根据实际需要,选择适合的时间单位进行休眠操作。注意在使用不同的时间单位时,需要根据单位进行适当的数值转换。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值