Java Thread.currentThread().sleep(时间)v/s Thread.sleep(时间);

Java Thread.currentThread().sleep(时间)v/s Thread.sleep(时间);,java,multithreading,Java,Multithreading,可能重复: 这两者有什么区别 Thread.currentThread().sleep(time) 及 还有一件事是,我可以通过任何其他方法在程序中进行延迟,而无需使用线程类…1-它们是相同的 2-Thread.sleep是Java中唯一的延迟方法,除非您以自己的方式实现;) 是一种静态方法。调用Thread.sleep()和调用Thread.currentThread().sleep()之间没有区别。但是,如果您使用eclipse,当您以非静态方式访问静态方法sleep()时,后一种形式

可能重复:

这两者有什么区别

Thread.currentThread().sleep(time)


还有一件事是,我可以通过任何其他方法在程序中进行延迟,而无需使用线程类…

1-它们是相同的

2-Thread.sleep是Java中唯一的延迟方法,除非您以自己的方式实现;)

是一种静态方法。调用
Thread.sleep()
和调用
Thread.currentThread().sleep()
之间没有区别。但是,如果您使用eclipse,当您以非静态方式访问静态方法sleep()时,后一种形式应该会给您一条警告消息

是Thread.sleep()的绝佳替代品。我个人更喜欢它,因为在大多数情况下,我想睡整秒钟,我可以用
TimeUnit.seconds.sleep(5)
,而不是
Thread.sleep(5*1000)
Thread.sleep(5000)


编辑:还有另一种选择,但它根本不是理想的选择。调用将以与Thread.sleep()类似的方式停止执行。但是,这样做是不可取的,因为首先必须使用
synchronize(Object)
,此方法用于等待/通知线程同步。此外,也不能保证线程将等待指定为来自Object.wait()的虚假唤醒的完整时间对于JVM实现来说是可以接受的。

这个问题太接近了,以至于一个无耻的瘟疫学家只是剪切并粘贴了被接受的答案作为他对这个问题的答案。@Stephen C也许是其他人因为问了多余的问题而无耻?@Dave-@Jazz只问了2个问题,而另一个问题不是多余的。此外,每个人都知道瘟疫是欺骗。孩子们在小学就开始学这个,任何一个上了大学的人都会意识到这是一个大难题。每一次操作都会在一定程度上延迟一个线程。然而,如果你特别想引入延迟,你可以;忙等待,使用Object.wait(timeout)、Queue.poll(timeout、TimeUnit)、Selector.select(timeout)、Socket.read()和超时或任何其他有超时的函数。这完全取决于你为什么要延迟你的线程。-1因为你的第2点不正确。请参阅我的答案以获取替代方法。TimeUnit本身将运行Java API中的Thread.sleep():使用此单位执行Thread.sleep。@Mohammad shamsi,是的,但使用Object.wait()不需要使用Thread类。严格地说,即使当前实现只是委托给Thread.sleep()。
Thread.sleep(time);