Thread.sleep与CountDownLatch.await超时

时间:2019-10-23 17:46:33

标签: java sleep countdownlatch

我知道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,仅用于休眠)。 / p>

我的一位同事说使用countDownLatch.await(timeout)效率更高(CPU),但我对此感到困惑。如果有任何原因(出于某种原因)特定上下文),其中这种用法比Thread.sleep更有效,我想知道它以及原因。

谢谢。

0 个答案:

没有答案