Chr*_*est 4 java concurrency findbugs thread-safety
我有这样的代码:
public class Thingy {
private final Lock lock = new ReentrantLock();
private boolean shutdown;
public void shutdown() {
lock.lock();
shutdown = true;
lock.unlock();
}
}
Run Code Online (Sandbox Code Playgroud)
并且FindBugs抱怨说"Thingy.shutdown()不会释放所有异常路径上的锁"并且我应该shutdown = true;在try-finally中包装该行,但据我所知,没有办法可以解决这个问题.
我错了还是假阳性?
公平地说,通常相当棘手(不是完整的编译器并进行分析)来确定任何给定的代码片段是否可以抛出异常.
但我同意,在这种情况下,这是一个误报.即使它不是 - 即使JLS/JVM规范的某个黑暗角落说某个分配可以,不知何故,通过异常 - 如果你进入那个状态,你需要更多的担心而不是un - 释放锁!
| 归档时间: |
|
| 查看次数: |
1577 次 |
| 最近记录: |