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 天。

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

猜你喜欢

转载自blog.csdn.net/lps12345666/article/details/130925538