2014-09-01 43 views

回答

0

如果线程在睡眠之前没有获得任何锁,它将不会保留任何锁。如果有,那么YES,sleep()不会给正在等待获取睡眠线程已获取锁定的对象锁定的任何其他线程。

因此,sleep()只是将线程休眠指定的时间,并且锁定已获取(如果获取)锁定状态下的所有锁定。

+0

所以它可能会减慢性能....对吧? – 2014-09-01 19:04:08

+0

也许你需要一些'放缓',这就是为什么你使用'sleep()'。 – 2014-09-01 19:05:35

1

sleep()wait()之间的主要区别是wait()释放锁或监视器,而sleep()在等待时不释放任何锁或监视器。等待用于线程间通信,而睡眠用于暂停执行。

Thread.sleep()保持它已经获得的监视器(如果有的话)。

Object.wait()发送当前线程(请注意,它适用于对象)为“不可运行”状态,像Thread.sleep(),但同样wait()被称为上的对象,而不是一个线程。由于对象是锁,并且线程对象当前处于“非运行状态”,所以锁被释放。

+0

迄今为止最好的答案。 1+ – 2014-09-01 19:05:33

+0

谢谢亲爱的。我真的从你的答案中得到了一些新的东西。 – 2014-09-01 19:09:01

相关问题