Java中Thread.sleep()和Thread.currentThread.sleep()的区别

一个静态的,一个实例对象函数。他们两个的功能类似,不过前者调用形式会产生迷惑,他好像是暂停一个对象的thread。理解这个先解释一个问题。

类似下面的代码:

someOhterThread.sleep(x)

这个函数并不是意味着someOtherThread这个线程进入睡眠状态,而是当前正在执行的线程进入睡眠状态。


引用别人的解释:

In Java, sleep is a static method. Both your examples do exactly the same thing, but the former version is confusing because it looks like it is calling a method on a specific object but it's not doing that at all. In your example it won't matter much, but it is more dangerous if you have the following:

someOtherThread.sleep(x);

This time it looks like you are telling some other thread to sleep, but in fact you are putting the current thread to sleep. The way to avoid making this type of mistake is to always call static methods using the class rather than a specific object.

参考网址:http://stackoverflow.com/questions/2077216/java-thread-currentthread-sleepx-vs-thread-sleepx


你可能感兴趣的:(JAVA)