Omu*_*Omu 83 java eclipse multithreading warnings sleep
我的代码中有这个
Thread.currentThread().sleep(x);
Run Code Online (Sandbox Code Playgroud)
Eclipse告诉我使用静态
Thread.sleep(x);
Run Code Online (Sandbox Code Playgroud)
相反,为什么?有什么区别,这两种方法之间的功能有什么不同吗?
Sea*_*wen 132
只有一种方法,而不是两种方法,它是静态的.虽然您可以通过实例引用调用静态方法,但它并不是一种好的方式.它表明程序员认为他或她正在调用实例方法.一个困惑的程序员可能会认为他或她可以导致另一个线程(不是当前的线程)以这种方式睡觉,而这不是它的作用.
你的代码行都做同样的事情,但第二行是更好的风格.
Mar*_*ers 32
在Java中,sleep是一种静态方法.你的例子都做了完全相同的事情,但前一版本令人困惑,因为它看起来像是在特定对象上调用一个方法,但它根本就没有这样做.在你的例子中它并不重要,但如果你有以下内容则更危险:
someOtherThread.sleep(x);
Run Code Online (Sandbox Code Playgroud)
这一次看起来你正在告诉其他一些线程要睡觉,但事实上你正在把当前线程置于睡眠状态.避免犯这种错误的方法是始终使用类而不是特定对象调用静态方法.