可能是重复问题:
Java: Thread.currentThread().sleep(x) vs. Thread.sleep(x)
Thread.currentThread().sleep(x)和Thread.sleep(x)有什么区别?
Thread.currentThread().sleep(time)
以及
Thread.sleep(time);
还有其他方法可以在程序中延迟而不使用Thread类吗?
可能是重复问题:
Java: Thread.currentThread().sleep(x) vs. Thread.sleep(x)
Thread.currentThread().sleep(x)和Thread.sleep(x)有什么区别?
Thread.currentThread().sleep(time)
以及
Thread.sleep(time);
还有其他方法可以在程序中延迟而不使用Thread类吗?
Thread.sleep()是一个静态方法。调用Thread.sleep()
和Thread.currentThread().sleep()
没有区别。然而,如果你使用eclipse,后者会给你一个警告消息,因为你以非静态的方式访问了静态方法sleep()。
TimeUnit.sleep()是Thread.sleep()的一个很好的替代品。我个人更喜欢它,因为在大多数情况下我想整秒睡眠,我可以很容易地并清楚地使用TimeUnit.SECONDS.sleep(5)
而不是Thread.sleep(5*1000)
或Thread.sleep(5000)
Edit: 还有另一种选择,但这绝对不是一种理想的选择。调用Object.wait()将类似于Thread.sleep()地停止执行。然而,这样做是不可取的,因为首先您必须使用synchronize(Object)
,而这个方法是用于等待/通知线程同步的。另外,不能保证线程会在指定的时间内等待完毕,因为Object.wait()可能会有虚假唤醒,这对JVM实现是可以接受的。
1 - 它们是相同的。
2 - Thread.sleep 是 Java 中唯一的延迟方法,除非你自己实现其他方式 ;)。