Nik*_*sov 5 java multithreading notify interrupted-exception
据我所知,这是Java中多线程的非常常见的片段.
boolean loaded = false;
Object lock = new Object();
public void block() {
synchronized (lock) {
while(!loaded)
lock.wait(); // Unhandled exception type InterruptedException
}
}
Run Code Online (Sandbox Code Playgroud)
在另一个线程中
public void done () {
synchronized (lock) {
loaded = true;
lock.notify();
}
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道应该把它放在哪里尝试和捕获,我可以围绕整个同步块或只是lock.wait()?什么是经验法则,它真的重要吗?
处理是否可以Thread.currentThread().interrupt()在这种情况下打电话?
您可能想要考虑Brian Goetz撰写的文章:Java理论与实践:处理InterruptedException
一般情况下,如果您不知道该怎么做,那么除了让调用者代码知道在等待锁定时可以中断此方法时,不要做任何事情.您可以通过将InterruptedException抛出到方法签名来执行此操作.
如果由于某种原因你被迫添加一个try/catch块并处理异常,那么Thread.currentThread().interrupt()会做,但重新抛出它可能是合适的.
| 归档时间: |
|
| 查看次数: |
8657 次 |
| 最近记录: |