Java:Thread.currentThread()。sleep(x)与Thread.sleep(x)



Answers

在Java中,睡眠是一种静态方法。 你的两个例子都做同样的事情,但前一个版本很混乱,因为它看起来像是在一个特定的对象上调用一个方法,但它根本没有这样做。 在你的例子中,它并不重要,但如果你有以下几点,它会更危险:

someOtherThread.sleep(x);

这一次看起来你正在告诉其他线程进入睡眠状态,但实际上你正在将当前线程置于睡眠状态。 避免产生这种类型错误的方法是始终使用类而不是特定对象调用静态方法。

Question

我在我的代码中有这个

Thread.currentThread().sleep(x);

Eclipse告诉我使用静态

Thread.sleep(x); 

相反,为什么? 有什么区别,这两种方法在功能上有差异吗?




Thread.currentThread().sleep(x);Eclipse的说法Thread.sleep(x); 如果需要的话,静态上下文是必需的,所以我们坚持稍微延迟这个睡眠。

由一个对象设置的静态范例只影响特定对象堆的打印生命周期,再次考虑整个对象生命周期静态不是那么麻烦,如果需要的话,它可以用于简化编码,按照Class引用print(例如: - Class.forName(pkg.className) ),而不是由HEAP内存中Class的运行时单个打印副本创建的任何object

对象的再次使用也有弱,幻影,强类型的参考....的优点和缺点,

代码是自然卷入的。 这正是我们如何才能使其工作和实用的方式。




Links