Thread.currentThread().sleep(time)v/s Thread.sleep(time);

Jaz*_*azz 9 java multithreading

可能重复:
Java:Thread.currentThread().sleep(x)与Thread.sleep(x)

什么是......之间的区别

Thread.currentThread().sleep(time)
Run Code Online (Sandbox Code Playgroud)

Thread.sleep(time);
Run Code Online (Sandbox Code Playgroud)

还有一件事是我可以在不使用Thread Class的情况下延迟程序的另一种方法...

Tim*_*der 9

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

TimeUnit.sleep()是Thread.sleep()的绝佳替代品.我个人更喜欢它,因为在大多数情况下我想睡几秒钟而且我可以轻松而明确地做到这一点而TimeUnit.SECONDS.sleep(5)不是Thread.sleep(5*1000)或者Thread.sleep(5000)

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


mhs*_*ams -4

1 - 它们是相同的。

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

  • -1,因为你的点号 2 不正确。请参阅我的答案以获取替代方案。 (3认同)