SCJP线程睡眠方法()

时间:2014-01-29 16:47:24

标签: java static-methods thread-sleep

我正在读SCJP。在阅读Threads时,我阅读了sleep()方法。但这句话,我没有得到它。请帮帮我

“请记住,sleep()是一种静态方法,所以不要误以为 一个线程可以让另一个线程进入休眠状态。“

某些方法可能看起来像是告诉另一个线程阻塞,但它们却没有。如果你有另一个线程的引用“t”,你可以写这样的东西: t.sleep()t.yield() 但这些实际上是static类的Thread方法 - 它们不会影响实例t;相反,它们被定义为始终影响当前正在执行的线程

2 个答案:

答案 0 :(得分:1)

即使您可以在yield()个实例上调用[leep(),s Thread]方法,但这些实例不会受到影响,因为sleep()方法是一种静态方法。无论当前正在执行的线程是否受影响,都不会影响您调用sleep()方法的实例

Api

  

导致当前正在执行的线程休眠

你可以这样,因为你在实例上调用方法并让它们进入睡眠状态,但它不是

答案 1 :(得分:0)

调用静态方法时,调用它的实例无效,无论是Thread.sleep还是说String.valueOf。例如,您可以编写String.valueOf(17)但您也可以编写"123".valueOf(17) - 看起来很奇怪,但结果在两种情况下都是“17”,而不考虑第二种情况下的“123”。

同样,Thread.sleep()是一个静态方法,它始终将当前线程置于休眠状态,即调用此方法的线程。通过此方法无法控制任何其他线程,即使对于不理解static methods的程序员来说这似乎也是可能的。