Java Thread.sleep vs CountDownLatch.wait带超时

Java Thread.sleep vs CountDownLatch.wait带超时,java,sleep,countdownlatch,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

我知道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秒后返回(没有人在倒计时)。 我想知道使用这种方法和简单地使用
Thread.sleep
之间是否有区别,特别是在CPU使用方面

即使CountDownLatch实例没有在线程之间共享,上面的代码片段也会在多个线程运行此代码的上下文中使用(因此,每个线程都有自己的CountDownLatch,仅用于睡眠)


我的一位同事说使用countDownLatch.Wait(超时)更高效(CPU),但我对其原因感到困惑。如果有任何原因(对于任何特定的上下文)表明这种用法比
Thread.sleep
更有效,我想知道它和原因


提前谢谢。

你的同事错了。不管怎样,这是一个睡眠操作,所以谁在乎效率呢?关键是在一段特定的时间内什么都不做。“但我对原因感到困惑”他/她解释了原因吗?如果是的话,那是什么?不是真的,我没有和他每天交流。他真的不知道原因。无论如何,这不是问题最重要的部分。如果他/她/它/任何人不知道为什么,那就没有什么可讨论的了。没有理由问任何人,只有虚假信息的来源。