我知道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
更有效,我想知道它以及原因。
谢谢。