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

时间:2015-08-15 11:52:13

标签: java multithreading interrupt synchronized

在Thinking in Java一书中写道,this.Invoke(new Func<DialogResult>(() => fsm.ShowDialog(this))); 无法中断试图获取同步锁的线程,我想知道为什么?

2 个答案:

答案 0 :(得分:6)

只有在声明抛出struct A { struct {int i; int j;} deltas[] {{0, -1}, {0, 1}, {-1, 0}, {1, 0}}; A() { } }; int main() { } 时才能中断阻塞操作。显然,InterruptedException块没有声明它,因此在等待获取锁时不可能中断线程。

或者,您可以使用显式锁定并调用synchronized

答案 1 :(得分:1)

这本书是错误的,除非它只引用synchronized关键字。 Object.wait()抛出InterruptedException