Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Thread.sleep vs.TimeUnit.SECONDS.sleep_Java_Sleep - Fatal编程技术网

Java Thread.sleep vs.TimeUnit.SECONDS.sleep

Java Thread.sleep vs.TimeUnit.SECONDS.sleep,java,sleep,Java,Sleep,如果我要打电话让Java线程进入睡眠状态,有没有理由选择其中一种形式而不是另一种 Thread.sleep(x) 或 我会打电话的。 唯一的区别是可读性,对于不明显的持续时间(例如:Thread.sleep(180000)与TimeUnit.MINUTES.sleep(3)),使用可能更容易理解 有关参考信息,请参见TimeUnit中的sleep()代码: public void sleep(long timeout) throws InterruptedException { if

如果我要打电话让Java线程进入睡眠状态,有没有理由选择其中一种形式而不是另一种

Thread.sleep(x)

我会打电话的。 唯一的区别是可读性,对于不明显的持续时间(例如:
Thread.sleep(180000)
TimeUnit.MINUTES.sleep(3)
),使用可能更容易理解

有关参考信息,请参见
TimeUnit
中的
sleep()
代码:

public void sleep(long timeout) throws InterruptedException {
    if (timeout > 0) {
        long ms = toMillis(timeout);
        int ns = excessNanos(timeout, ms);
        Thread.sleep(ms, ns);
    }
}

它们是一样的。我更喜欢后者,因为它更具描述性,可以选择时间单位(请参见):
小时
微秒
毫秒
分钟
纳秒

论证性:我更喜欢前者-我希望线程睡眠,不是
毫秒
[:-)@CarlosHeuberger:嗯,你可以把它解读为睡眠x
,但这肯定是一个品味问题。另一方面,请注意
睡眠()
线程上的
静态方法
所以有人可能会说,不清楚哪个线程应该睡眠(Thread myThread=…;myThread.sleep()
的意思是什么?)@CarlosHeuberger最好能写
线程睡眠(3,TimeUnit.SECONDS)
FYI:Selenium项目有一个睡眠者方法,在使用它时不需要捕捉异常:我同意。如果你想声明你的睡眠时间是一个常数,你可以稍后更改,比如说,从1分钟到10秒,一个解决方案是
public static final long sleep\u time=TimeUnit.MINUTES.toMillis(1)这允许
Thread.sleep()
但保持了
TimeUnit
的可读性优势。另一个选项是
Thread.sleep(Duration.ofSeconds.toMillis())
public void sleep(long timeout) throws InterruptedException {
    if (timeout > 0) {
        long ms = toMillis(timeout);
        int ns = excessNanos(timeout, ms);
        Thread.sleep(ms, ns);
    }
}