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

news2025/1/4 20:18:58

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MT6765 处理器参数 MTK6765芯片性能配置|详细参数

MT6765处理器,也被称为Helio P35,是联发科(MediaTek)推出的高性能智能芯片。作为目前市场上受欢迎的低成本智能芯片之一,MT6765以其卓越的性能和创新技术为用户提供了更加顺畅和高效的使用体验。 MT6765作为一款八核芯片,MT6765的…

最佳实践:基于vite3的monorepo前端工程搭建 | 京东云技术团队

一、技术栈选择 1.代码库管理方式-Monorepo: 将多个项目存放在同一个代码库中 ▪选择理由1:多个应用(可以按业务线产品粒度划分)在同一个repo管理,便于统一管理代码规范、共享工作流 ▪选择理由2:解决跨项…

Homeassistant --openwrt docker 安装

openwrt homeassistant安装教程 前提:在N1盒子上面烧录 f大的openwrt系统 (安装81o 或者82o都可以) 一.进入openwrt系统 通常为192.168.1.1 打开网络配置 点击网络点击接口然后修改 这样网络是属于旁路由上网了 可以联通网络了 主要需要填写正确 二.点击docker …

南大通用数据库-Gbase-8a-报错集锦-02-metadata is incomplete on localhost

一、版本信息 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2Gbase8a版本8.6.2-R43 二、问题原因 由于gbase.table_distribution存储了所有引擎为express的表元数据信息,如果此表出现数据损坏&a…

Linux使用PowerShell模块管理MsSql-Server

1.安装PowserShell 更新包列表 sudo apt-get update 安装依赖: sudo apt-get install -y wget apt-transport-https software-properties-common 下载 key: wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb&…

第三方apple pencil哪个好?好用的电容笔排行榜

由于Apple Pencil的推出,让iPad变成了一个轻量化的办公室工具,它的优点就是可以让画家在iPad上作画,能够适用于各种各样的绘画,并且非常适合一些上班族。今天就来为大家推荐几支适合画画的电容笔! 第一部分、电容笔选…

「实在RPA·服装制造数字员工」助力服装「智」造数字升级

服装制造业作为衣食住行的重要组成部分,除了在百姓生活中扮演者着重要角色之外,同时在经济发展中具有重要的地位和作用。它不仅提供了大量就业机会,促进国际贸易和经济发展,同时也推动了技术创新和消费需求的满足。为顺应数字经济…

Vue组件化、通过自定义指令子组件向父组件传递

1.如何安装Vue脚手架? 第一步(仅第一次执行):全局安装vue/clinpm install -g vue/cli 第二步:切换到你要创建项目的目录,然后使用命令创建项目vue create xxxx 第三步:启动项目npm run serve 2…

C语言中二维数组和二维数组分析

问题 最近有个同事发现一个问题:一个二维数组,想把它传给一个函数,具体代码如下: char array[3][128]; void fun(char** array) {strcpy(array[0],"confirm"); }当我试图直接把二维数组名传给函数的时候,f…

接入淘宝API接口,获取店铺详情轻松迈入大数据时代

随着电商行业的飞速发展,API接口已经成为了一种不可或缺的技术。作为中国最大的电商平台,淘宝也拥有着自己的API接口。本文将重点讲解淘宝API接口技术,包括其基本原理、使用方法、优缺点等方面,帮助大家进一步了解淘宝API接口的奥…

年度发布 | MeterSphere一站式开源持续测试平台发布v2.10 LTS版本

2023年5月25日,MeterSphere一站式开源持续测试平台正式发布v2.10 LTS版本。这是继2022年5月发布v1.20 LTS版本后,MeterSphere开源项目发布的第三个LTS(Long Term Support)版本。MeterSphere开源项目组将对MeterSphere v2.10 LTS版…

一个完整的APP定制开发流程是怎样的?

随着移动互联网的发展,越来越多的 APP应用软件进入人们的生活,让我们的生活更便捷、更舒适。而随着互联网技术的进步,移动互联网应用软件开发行业也越来越成熟,为了适应市场需求,各种功能强大、性能良好的 APP应用软件…

电商API接口系列封装(提高工程师时效性,降低错误率)

API接口封装是指将原本分散在各个模块或系统中的API接口进行封装,形成一个可重用且独立的API库。通过API接口封装,可以提高系统的可维护性和可扩展性,降低开发成本和维护难度。 API接口封装通常分为两个步骤: 定义API接口&#x…

涨知识!一文带你读懂空气质量数据(附Java 和小程序接入示例代码)

空气污染对人类健康和环境造成了巨大的危害。据统计,每年因空气污染导致的早逝人数超过数百万人。长期暴露在污染物中,人们易患呼吸系统疾病、心血管疾病、癌症等。此外,空气污染还对生态系统、农作物和能源消耗产生负面影响。 在解决空气质…

首届百度商业AI技术创新大赛启动 点燃AIGC革新“星火”

随着生成式AI在全球范围的热议,AIGC前沿技术也在快速迭代,正如百度CEO李彦宏所说 “人工智能发生了方向性改变,从辨别式AI走向生成式AI,生成式AI会带来极大的效率提升” 。而这一领域的发展,将推动AI产品应用深化&…

Spark入门这篇就够了(万字长文)

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录 Spark是什么Spark组件Spark的优势Word Count Spark基本概念ApplicationDriverMaster和WorkerExecutorJobTaskStageStage的划分 窄依赖 & 宽依赖ShuffleRDDDAG Spark执行流程Spark运行模式RDDRDD…

项目开发-依赖倒置、里式替换、接口隔离的应用深入理解

文章目录 前言依赖倒置定义不符合依赖倒置原则是什么样子😄完善 里式替换定义具体应用 接口隔离定义具体应用 前言 最近在做.net项目和学习这个设计模式中的依赖倒置和工厂方法,这个过程当中发现在开发这个.net项目中有很多不合理的地方,就是…

(转载)基于粒子群算法的多目标搜索算法(matlab实现)

1 理论基础 在实际工程优化问题中,多数问题是多目标优化问题。相对于单目标优化问题,多目标优化问题的显著特点是优化各个目标使其同时达到综合的最优值。然而,由于多目标优化问题的各个目标之间往往是相互冲突的,在满足其中一个…

KD7742交直流耐压绝缘分析仪

一、产品简介 KD7742交直流耐压绝缘分析仪具有交/直流耐压、绝缘电阻等项目的测试分析功能,能显示电压、电流和电阻的波形图以及趋势图,以便更直观的监测分析绝缘性能和绝缘崩溃时的各项指标,适用于高要求的测试分析场合。 产品具有测试参数范…

vue实现二维码识别功能 读取二维码内容

我们可以访问 https://www.wwei.cn/?frombdtp 在输入框中输入文本 然后 点击生成二维码 他就会给我生成一个对应信息的二维码图片 我们可以复制到本地 打开vue项目 先引入依赖 npm install canvas jsqr然后组件编写代码如下 <template><div><input type&qu…