为什么Thread.interrupt()无法中断试图获取锁的线程

wanghao :

在《用Java思考》一书中Thread.interrupt(),我写到了不能中断试图获取同步锁的线程,我想知道为什么吗?

Marko Topolnik:

阻塞操作只有在声明为throw时才能被中断InterruptedException显然,一个synchronized块没有声明它,因此在等待获取锁的同时不可能中断线程。

或者,您可以使用显式锁定并调用Lock.lockInterruptibly()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果线程试图获取它已经持有的锁,会发生什么?

为什么在catch InterruptException块中调用Thread.currentThread.interrupt()?

在Linux内核中,为什么下半部无法获取互斥锁?

为什么拿着自旋锁无法入睡?

为什么我的编译器无法识别#include <thread>(c ++)?

为什么InterruptedExceptions清除线程的中断状态?

即使我正在调用thread.interrupt(),线程也不会中断

为什么要捕获InterruptedException来调用Thread.currentThread.interrupt()?

同时执行Thread.interrupt()Object.notify(),为什么会有两个结果?

为什么我的interrupt()没有杀死我的线程?

为什么锁{this}不好?

为什么在调用`privateManagedObjectContext.perform`时崩溃(从com.apple.main-thread(线程1)入队)?

为什么在UI线程上调用Thread.Join()不会挂起我的应用程序?

为什么使用互斥锁从线程进行奇怪的打印

为什么创建的线程数小于thread-max?

为什么在c ++中可以在没有#include线程的情况下使用std :: thread?

为什么不能获取我传递给Thread的矩阵?

为什么线程中存在“ pool pool-1-thread-1”异常

为什么用_thread.start_new_thread创建的线程不打印任何内容?

为什么Thread.Sleep同步线程?

为什么Ubuntu在冷启动后显示消息无法获取锁/ var / lib / apt / lists / lock

为什么所有线程都获得锁?

Java 无法获取线程锁

无法克隆线程 - 为什么?

为什么AsyncLock里面的锁不会阻塞线程?

为什么 std::thread 无法打开 QT 对话框?

kotlin 协程 - 为什么 Thread.sleep 不会在启动时暂停主线程?

即使在 Java 线程中的 Thread.State 为“TERMINATED”之后,isInterrupted() 仍然返回“false” - 为什么?

为什么while循环无法中断?