我已经听说在java中的sleep(timeInMilliseconds)
方法持有锁的对象,并进入休眠指定的时间。而且我还读到它有机会让其他线程在该休眠期执行? sleep()
方法如果能够锁定其他线程想要使用的对象,如何帮助其他线程?sleep()方法如何帮助其他线程执行,因为它拥有该对象的锁itselt?
回答
如果线程在睡眠之前没有获得任何锁,它将不会保留任何锁。如果有,那么YES,sleep()
不会给正在等待获取睡眠线程已获取锁定的对象锁定的任何其他线程。
因此,sleep()
只是将线程休眠指定的时间,并且锁定已获取(如果获取)锁定状态下的所有锁定。
sleep()
和wait()
之间的主要区别是wait()
释放锁或监视器,而sleep()
在等待时不释放任何锁或监视器。等待用于线程间通信,而睡眠用于暂停执行。
Thread.sleep()
保持它已经获得的监视器(如果有的话)。
Object.wait()
发送当前线程(请注意,它适用于对象)为“不可运行”状态,像Thread.sleep()
,但同样wait()
被称为上的对象,而不是一个线程。由于对象是锁,并且线程对象当前处于“非运行状态”,所以锁被释放。
迄今为止最好的答案。 1+ – 2014-09-01 19:05:33
谢谢亲爱的。我真的从你的答案中得到了一些新的东西。 – 2014-09-01 19:09:01
- 1. Java线程sleep()的帮助
- 2. 错误:调用线程无法访问此对象,因为其他线程拥有它
- 3. ,因为不同的线程拥有它
- 4. PHP pthreads:线程dosen't执行其他对象的方法async
- 5. 解锁其他线程拥有的锁java
- 6. 调用线程无法访问此对象,因为不同的线程拥有它。如何编辑图像?
- 7. 非UI“因为不同的线程拥有它调用线程不能访问该对象”
- 8. 因为不同的线程拥有它调用线程不能访问该对象,WPF
- 9. PrintDialog类:因为不同的线程拥有它调用线程不能访问该对象
- 10. 如何确保异常“调用线程不能访问此对象,因为不同的线程拥有它”?
- 11. wpf绑定:调用线程无法访问此对象,因为不同的线程拥有它
- 12. TFS2012:调用线程无法访问此对象,因为不同的线程拥有它
- 13. c#tpl,继续出现问题“调用线程无法访问对象,因为不同的线程拥有它”
- 14. WPF System.InvalidOperationException:调用线程无法访问此对象,因为不同的线程拥有它
- 15. 调用线程无法访问此对象,因为不同的线程拥有它
- 16. 调用线程无法访问此对象,因为不同的线程拥有它
- 17. InvalidOperationException:调用线程无法访问此对象,因为不同的线程拥有它。
- 18. 调用线程无法访问此对象,因为不同的线程拥有它在wpf
- 19. 调用线程无法访问此对象,因为不同的线程拥有它
- 20. 有什么办法杀死运行的线程死锁的“http:8080-42”,它封锁了所有其他线程
- 21. 使用除锁定对象以外的其他锁定线程
- 22. 调用线程不能访问此对象,因为不同的线程拥有
- 23. Java线程sleep()方法
- 24. 如何从doinbackground()执行其他线程()
- 25. 获取对静态对象的锁应该阻塞其他请求线程?
- 26. 如何通过使用sleep()或其他方法使代码缓慢执行?
- 27. 调用线程不能访问这个对象,因为不同的线程拥有它有错误
- 28. 如何执行其他类的方法
- 29. C#阻止从其他线程访问所有对象方法
- 30. WPF TabControl的,因为不同的线程拥有它
所以它可能会减慢性能....对吧? – 2014-09-01 19:04:08
也许你需要一些'放缓',这就是为什么你使用'sleep()'。 – 2014-09-01 19:05:35