在Thinking in Java中写道Thread.interrupt()
不能中断试图获取同步锁的线程,我想知道为什么?为什么Thread.interrupt()不能中断试图获取锁的线程
5
A
回答
6
阻塞操作只有在声明为抛出InterruptedException
时才会中断。显然,块没有声明它,因此在等待获取锁的时候不可能中断一个线程。
或者,您可以使用明确的锁定并致电Lock.lockInterruptibly()
。
1
这本书是错误的,除非它仅指关键字。 Object.wait()
投掷InterruptedException
。
相关问题
- 1. 未能获取锁的线程会发生什么情况?
- 2. 为什么task1线程不会中断
- 3. Thread.interrupt()不工作后中断
- 4. 为什么AbstractQueuedSynchronizer的中断上acquring锁
- 5. 当某个线程调用Thread.interrupt()时,会发生什么?
- 6. 为什么要做Thread.interrupt()抛出IllegalThreadStateException?
- 7. 为什么锁定可能会成为多线程程序的瓶颈?
- 8. 为什么在调试主线程时工作线程不能执行?
- 9. 为什么我不能获取queryString?
- 10. 为什么不能使用UI线程访问视图的线程?
- 11. 为什么Mutex不能解锁?
- 12. 什么决定了两个竞争线程中的哪一个获取锁?
- 13. 如果线程试图获取它已经拥有的锁,会发生什么情况?
- 14. 我们可以中断已获得锁定的线程吗?
- 15. 试图找出为什么我的代码不断打印
- 16. 如何调试从主线程以外的线程获取Web锁定?
- 17. 为什么我不能从我的项目中获取所有路线?
- 18. 试图理解为什么一个线程可能在日食中被阻塞?
- 19. 试图理解Ruby中的线程化。测试代码不能按预期工作,为什么?
- 20. 为什么我的线程不能在perl中连接?
- 21. 为什么gui线程不能在多线程的公寓中运行?
- 22. 为什么不是一个线程正在等待响应中断的对象锁?
- 23. 为什么我的线程在我中断时没有结束?
- 24. 为什么我的代码会中断一个线程泄漏?
- 25. 从主线程或Web线程以外的线程获取Web锁定。 UIKit中不应该从辅助线程
- 26. 为什么我在Sharepoint中获取Value不能为null错误?
- 27. 为什么Boost scoped_lock不能解锁互斥锁?
- 28. 为什么我的断点在FDT的调试器中不能正常工作?
- 29. 多线程锁测试
- 30. 在android中,为什么UI不能从UI线程更新?
它可以中断线程。例如,线程在中断时不会停止等待同步锁定,因为它会(如通过抛出InterruptedException)休眠。但是如果线程获得了锁,那么检查它是否中断,它会是。 –
在一个设计良好的程序中,没有线程永远持有锁的时间超过检查和更新一些变量所需的时间。应该不需要中断来“唤醒”待处理的同步块。如果你认为我错了,并且你的程序真的需要这个能力,那么考虑使用'java.util.concurrent.locks.ReentrantLock'而不是'synchronized'。 'reentrantLock.tryLock(time,unit)'方法_can_可以被中断。 –