首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Fortify将其标记为未发布的资源?

为什么Fortify将其标记为未发布的资源?
EN

Stack Overflow用户
提问于 2018-05-01 18:25:18
回答 1查看 2.9K关注 0票数 3

我有一门课是这样的:

代码语言:javascript
复制
class Foo {
    final ReadWriteLock lock = new ReentrantReadWriteLock();

    Object read() {
        lock.readLock().lock();
        Object result;
        try {
            result = getResource();
        } finally {
            lock.readLock().unlock();
        }
        return result;
    }
}

使用read标记方法Unreleased Resource: Synchronization,声称获得了锁,然后在没有释放锁的情况下直接退出该方法。

我的预感是,由于lock字段的接口类型为ReadWriteLock,Fortify无法确定lock.readLock()为两个调用返回相同的Lock对象。因此,Fortify看到我们锁定的Lock不是存储在局部变量中,它认为Lock因此丢失和泄漏。这是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 20:42:18

我的直觉是对的。Fortify无法判断lock.readLock()是否为两个调用返回相同的Lock对象,并且将锁存储在final局部变量中解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50121774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档