我的代码中有这样的代码
Thread.currentThread().sleep(x);Eclipse告诉我使用静态
Thread.sleep(x); 相反,为什么呢?有什么区别,这两种方法在功能上有什么区别吗?
发布于 2010-01-16 19:48:52
只有一个方法,而不是两个,而且它是静态的。虽然您可以通过实例引用调用静态方法,但这并不是一种好的风格。它表明程序员认为他或她正在调用实例方法。一个困惑的程序员可能认为他或她可以使另一个线程(而不是当前线程)以这种方式休眠,而事实并非如此。
这两行代码做的都是一样的事情,但第二行代码的风格更好。
发布于 2010-01-16 19:49:16
在Java中,睡眠是一种静态方法。您的两个示例都做了完全相同的事情,但前一个版本令人困惑,因为它看起来像是在调用特定对象上的方法,但它根本没有这样做。在您的示例中,这不会有太大影响,但如果您具有以下条件,则会更危险:
someOtherThread.sleep(x);这一次,看起来您是在告诉其他线程休眠,但实际上您是在让当前线程休眠。避免此类错误的方法是始终使用类而不是特定对象调用静态方法。
发布于 2015-12-03 14:05:01
Thread.currentThread().sleep(x);或Eclipse所说的方式,所以如果需要的话,Thread.sleep(x);静态上下文是必需的,所以我们在这个睡眠中保持稍微延迟。
静态范例由一个对象设置,只影响特定对象堆打印生命周期,同样,考虑到整个对象生命周期静态并不是那么麻烦,如果需要,它可以用来简化编码,但要小心完成,因为静态足迹由Class (例如:- Class.forName(pkg.className))引用,类似于名称,而不是任何object,它是HEAP内存中类的运行时单一打印副本。
同样,object的使用也有弱引用、幻影引用和强引用的优缺点...,
代码被大自然所曲解。这只是我们如何做的方式,以使其工作&功能性。
https://stackoverflow.com/questions/2077216
复制相似问题