并发-sleep更优雅的实现方案:TimeUnit.枚举常量.sleep()

  • 首先给出结论
  • 线程使用中的暂停,建议优先使用TimeUnit类中的sleep()
  • 但需要注意传入时间小于0的异常情况
  • TimeUnit是java.util.concurrent包下的一个类名
  • 主要功能是暂停线程的操作
  • 拥有与Thread.sleep()一样的功能都是暂停线程,但TimeUnit提供了可读性更好的线程暂停操作
  • 可以指定DAYS、HOURS、MINUTES、SECONDS、MILLISECONDS和NANOSECONDS
  • 而Thread.sleep()参数如下:
  • 它可以接收长整型毫秒和长整型的纳秒参数,这样对程序员造成的一个问题就是
  • 很难知道到底当前线程是睡眠了多少秒、分、小时或者天
  • 看看下面这个Thread.sleep()方法:
  • 粗略一看,你能计算出当前线程是等待多长时间吗?
  • 可能有些人可以,但是对于大多数程序员来说这种写法的可读性还是很差的
  • 你需要把毫秒转换成秒和分,让我们来看看另外一个例子
  • 这个例子比前面那个例子可读性稍微好一点:
  • 这比前面那个例子已经好多了,但是仍然不是最好的
  • 你注意到睡眠时间用毫秒,不容易猜出当前线程将等待4分钟
  • TimeUnit类解决了这个问题,通过指定DAYS、HOURS、MINUTES,SECONDS、MILLISECONDS和NANOSECONDS
  • TimeUnit是Java枚举应用场景中最好的例子之一
  • 所有TimeUnit都是枚举实例
  • 让我们来看看线程睡眠4分钟用TimeUnit是如何使用的
  • 你可以看到这比Thread的sleep方法的可读性好多了
  • 记住TimeUnit.sleep()内部调用的Thread.sleep()也会抛出InterruptException
  • 除了sleep的功能外,TimeUnit还提供了便捷方法用于把时间转换成不同单位
  • 例如,如果你想把秒转换成毫秒,你可以使用下面的代码:
  • 它将返回44,000
  • 枚举常量摘要
  • 但需要注意的是
  • TimeUnit调用的sleep方法,如果传入的时间是小于0的那么不会做任何的事情
  • 而sleep方法,如果传递的参数小于0,是会抛出异常的

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

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

相关文章

springboot实现文件防盗链设计

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 个人IP:shigen 👋👋👋hello,伙伴们好久不见&…

Git使用(1):介绍、克隆、推送

一、介绍与安装 1、Git是什么? Git是目前世界上最先进的分布式版本控制系统。工作原理 / 流程: workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓…

智能防疫电梯模拟控制系统设计-设计说明书

设计摘要: 本设计是基于单片机的智能防疫电梯模拟控制系统,主要实现了多项功能。首先,系统进行无接触测温,如果温度正常则可以启动电梯运行,如果温度异常则电梯会报警提示有乘客体温异常,电梯不会运行。其…

Pencils Protocol 宣布再获合作伙伴 Galxe 的投资

近日,Scroll生态项目Penpad将品牌进一步升级为Pencils Protocol,全新升级后其不仅对LaunchPad平台进行了功能上的升级,同时其也进一步引入了Staking、Vault以及Shop等玩法,这也让Pencils Protocol的叙事方向不再仅限于LaunchPad&a…

BUUCTF靶场[MISC]荷兰宽带数据泄露、九连环

[MISC]荷兰宽带数据泄露 考点:查看路由器恢复丢失密码的文件 工具:RouterPassView——路由器密码查看工具 工具链接:https://routerpassview.en.lo4d.com/windows RouterPassView是一款老牌的路由器密码查看器,可以一键获取路…

[Kubernetes] kube-proxy 详解

文章目录 1.kube-proxy概述2.userspace模式3.iptables模式4.ipvs模式 1.kube-proxy概述 kube-proxy组件是用来实现service的请求转发,具体实现方式是kube-proxy运行在每个node上,通过watch监听API Server 中service资源的create,update&…

IPv6路由配置:ripng、ospfv3、静态路由

本次主要是对ipv6路由的配置,先了解ipv6,再进行实验配置 目录 一、🍉 什么是IPV6?🌟IPv6的主要特点 二、🍉IPv6和IPv4的对比🌟 共同点:🌟 IPv4的优缺点:🌟 IPv6的优缺点:…

Docker三剑客从0到1

一、docker三剑客介绍 使用"三剑客"可以帮助我们解决docker host维护,多容器编排部署,多个docker host集群的各个难题。 docker-machine 创建虚拟机 我们知道docker使用了linux的内核技术(namespace 资源隔离,cgroup资源限制等),那么如果我想在windows或Mac系统上…

按照官网引擎问题重新设置监控目录,仍然存在空三等待的问题怎么办?

答:任务目录和引擎目录设置一样,然后取消任务重新写入. 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格模型&#xff0…

webpack生成模块关系依赖图示例:查看构建产物的组成部分 依赖关系图

npm i -D webpack-bundle-analyzer core-js babel-loaderwebpack.config.js const BundleAnalyzerPlugin require(webpack-bundle-analyzer).BundleAnalyzerPlugin; module.exports {entry: ./src/index.js,output: {filename: main.js,},// mode: production, // 或者 produ…

公共命名空间和RHP

概述 RHP的全称是:the little Robot that Helped me Program,帮我编程序的小机器人。 RHP必然存在,C语言的宏、C的模板,都是RHP;更复杂的例子,是lex和yacc,它们是制作程序的程序,也…

MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】

前言 做数仓开发离不开 SQL ,写了很多 HQL 回头再看 MySQL 才发现,很多东西并不是 HQL 所独创的,而是几乎都来自于关系型数据库通用的 SQL;想到以后需要每天和数仓打交道,那么不管是 MySQL 还是 Oracle ,都…

EDA设计学习笔记2:STM32F103C8T6最小系统板的仿绘

今日开始仿制练习一个STM32F103C8T6最小系统板,通过对这个最小系统板的仿制,达到对自己PCB设计的练习的目的,最终目标是自己设计出一块PCB,做一个OLED的桌面小摆件...... 也不知道画出来能不能用..... 目录 主控芯片的搜索与放置…

迷宫游戏(c++)

我们来玩一个迷宫游戏,尝试走一下面的迷宫。 迷宫游戏 我们用一个二维的字符数组来表示前面画出的迷宫: S**. .... ***T 其中字符S表示起点,字符T表示终点,字符*表示墙壁,字符.表示平地。你需要从S出发走到T&#xf…

React渲染流程

在 React 渲染分为两个阶段,Render 和 Commit,Render 是修改 React 组件的状态,把需要更新的组件标记为待更新,在 Commit 阶段将待更新的组件进行渲染并最终更新到浏览器的 Dom 树中。 Render 阶段是可以并执行操作的&#xff0c…

软件测试常见面试题合集(内附详细答案)

01 软件测试理论部分 1.1 测试概念 1. 请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试 单元测试:完成最小的软件设计单元(模块)的验证工作,目标是确保模块被正确的编码 集成测试:通过测试发现与…

猛兽派对是什么游戏 猛兽派对攻略大全 苹果电脑怎么玩《猛兽派对》?

猛兽派对是多人派对类型的游戏,该款游戏的动作基于物理原理设计的,体验游戏玩家可以选择自己喜欢的小动物角色参加派对,游戏内具有很多不同的关卡可供挑战。 在steam平台上,猛兽派对对应英文名称是PartyAnimals,官方正…

JVM内存模型最新面试题(持续更新)

问题:java中创建的对象一般放在哪里?(全流程包含从创建到回收) 回答 大部分对象在堆中,这个基本都知道; 少部分对象是会在栈中的,比如作用域不局限于方法内的方法内部变量,这类对象的特征一般就是生命周期…

opencv4.8.0 GPU版本各平台编译

一、opencv4.8.0 ubuntu22.04上编译: 用cmake进行编译,需要配置三次。选中world选项,输入opencv_contrib_module路径。 ubuntu22.04上编译: cmake \ -D CMAKE_BUILD_TYPERELEASE \ -D CMAKE_INSTALL_PREFIX/usr/local \ -D BUILD_opencv_p…

免费公有云轻量级云服务,支持免费云数据库和创建应用,支持多语言应用!

在今天这个数字化迅速发展的时代,选择一个高效、经济且功能全面的云平台对于任何大小的企业来说都是至关重要的。MemFire Cloud 作为市场上新兴的星级云服务提供商,以其免费的公有云服务和对多种编程语言的支持,提供了一站式解决方案&#xf…