java - Thread.sleep vs CountDownLatch.await 超时
问题描述
我知道 CountDownLatch 用于在多个线程中的处理之间进行同步。但我的问题是关于将 CountDownLatch 用于它不特别用于的事情:等待一段时间,然后继续在同一个线程中执行指令。
//the countDown instance is not shared with any other thread
CountDownLatch countDown = new CountDownLatch(1);
try {
//here I just want to "sleep" for one second
countDown.await(1000, TimeUnit.MILLISECONDS);
} catch (InterruptedException ex) {
//handle exception
}
显然在这里,等待只会在 1 秒后返回(没有人在倒计时 CountDownLatch)。我想知道使用这种方法和简单地使用之间是否有区别Thread.sleep
,尤其是在 CPU 使用率方面。
即使 CountDownLatch 实例不在线程之间共享,上面的代码片段也会在多个线程运行此代码的上下文中使用(因此,每个线程都有自己的 CountDownLatch,仅用于睡眠目的)。
我的一位同事说使用 countDownLatch.await(timeout) 效率更高(CPU),但我对原因感到困惑。如果有任何原因(对于任何特定上下文)这种用法比 更有效Thread.sleep
,我想知道它和原因。
提前致谢。
解决方案
推荐阅读
- ajax - 如何在附加jquery代码相同的laravel图像中动态图像
- php - 有条件地在 woocommerce 产品页面上显示变体描述
- express-gateway - 在 Express Gateway 中,如何停止添加斜杠的代理端点
- google-analytics - 从 Google Analytics Data API (GA4) 获取基于多个指标
- airflow - Airflow - 在通过 TriggerDagRunOperator 发送之前设置 dag_run conf 值
- django - 在 Django 表单中查找小部件的选定值
- java - 运行 Quarkus 生产 Jar 时出错
- c++ - 在 C++ 中寻找更好的条件继承方法
- c# - 如何使用位图或图像一次读取一行图像像素
- maven - 即使在添加镜像后也会出现“存储库的阻止镜像”maven错误