线程安全框架

2024-05-04

以下类不是线程安全的(如证明以下代码不是线程安全的 https://stackoverflow.com/questions/2410499/proving-the-following-code-not-thread-safe )

是否有一个框架可以帮助进行编译时/运行时分析并告诉我们以下内容不是线程安全的?

对于编译时,理想情况下在 Eclipse 中会出现摆动下划线并告诉我们该类不是线程安全的?

对于运行时,静态代码分析是否会将类捕获为非线程安全?

public class LazyInitRace {
   private ExpensiveObject instance = null;

    public ExpensiveObject getInstance() {
    if (instance == null)
      instance = new ExpensiveObject();
    return instance;
   }
}

FindBugs http://findbugs.sourceforge.net/可以找到代码中线程同步不一致的部分,即您在一个地方同步对字段的访问,但在另一处不同步。它还可以进行基本验证JCIP注释 http://www.javaconcurrencyinpractice.com/annotations/doc/index.html,但我相信目前仅检查 @Immutable 。

我不知道有任何静态分析工具可以自动捕获这种特殊情况,但我确信存在一个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线程安全框架 的相关文章

随机推荐

  • Linux 上的 wall-time 分析

    我有一个应用程序 我想分析在各种活动中花费了多少时间 由于此应用程序是 I O 密集型 因此我希望获得一份报告 该报告将总结每个库 系统调用所花费的时间 挂起时间 我已经尝试过 oprofile 但它似乎给出了 Unhalted CPU 周
  • JSF:如何通过 bean 验证来验证字段并返回错误消息?

    我有一个联系表单 并且有一些通过 Bean 验证进行验证的字段 提交后如何返回 Bean 验证错误消息 例如
  • 从 MySQL 执行 shell 命令

    我知道我正在寻找的可能是一个安全漏洞 但由于我设法在 Oracle 和 SQL Server 中做到了这一点 所以我会尝试一下 我正在寻找一种从 MySQL 上的 SQL 脚本执行 shell 命令的方法 如有必要 可以创建和使用新的存储过
  • openSUSE phpmyadmin 错误:缺少 mbstring 扩展名

    phpMyAdmin 错误 缺少 mbstring 扩展名 请检查 你的 PHP 配置 我已经安装了 php mbstring 和 php gettext 我的 php 版本是 php7 我通过 zypper 安装了 php 和 phpmy
  • 如何在从左到右、从上到下排序的二维数组中搜索数字?

    我最近收到了这个面试问题 我很好奇有什么好的解决方案 假设我有一个二维数组 其中所有 数组中的数字在增加 从左到右 从上到下的顺序 底部 搜索和搜索的最佳方式是什么 判断目标号码是否在 大批 现在 我的第一个倾向是使用二分搜索 因为我的数据
  • 双向 CSS 高度动画

    keyframes mgm from max height 250px to max height 0px mgm width 180px border 1px solid black padding 10px animation mgm
  • 分页助手 asp.net mvc

    我已经实现了一个分页 html 帮助器 改编自史蒂文 桑德森的书 这是当前的代码 公共静态字符串PageLinks 此HtmlHelper html int currentPage int TotalPages Func pageUrl S
  • 如何修复 Jaspersoft studio 插件中由 TraceGovernor 引起的 java.lang.NullPointerException?

    我正在为 Jaspersoft studio 编写最新的插件 当尝试打开报告预览时 插件崩溃 来自插件 java lang NullPointerException 的堆栈跟踪 com jaspersoft studio debug Tra
  • 在不同的任务中启动一个新的 Android Activity

    这是一个有点复杂的故事 我有一个Activity A Activity A使用意图打开浏览器来进行一些身份验证 完成此操作后 网页将重定向到 URL Activity B使用意图过滤器将其设置为可浏览 并且 URL 使得浏览器启动Activ
  • 鼠标悬停在图像上显示 x

    我想在图像上显示 X 标记 尺寸为 24x24 为此我采用 li 元素和 in 元素 li style display inline block background 283038 border 1px solid 161b1f margi
  • 在 Eclipse Kepler 中安装远程系统资源管理器

    我正在使用 Eclipse Kepler 并且尝试使用存储库安装远程系统资源管理器 当我在开普勒搜索它时 http download eclipse org releases kepler http download eclipse org
  • SQL 注入在 winform 中有效吗?

    我正在用 C 制作一个 Windows 软件 我读过关于sql injection但我没有发现它适用于我的应用程序 SQL 注入在 winform 中有效吗 如果是的话如何预防 EDIT 我正在使用文本框来读取用户名和密码 通过使用 tex
  • 如何使 Docker 容器中的 /etc/hosts 可被 root 写入? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我是使用 docker 的新手 正在配置容器 我无法编辑 etc hosts 但需要编辑我正在开发的某些软件 自动编辑 通过 sudo
  • 有 64 位 Ruby 吗?

    似乎人们正在为 64 位平台编译 MRI Ruby 1 8 7 我已经搜索和阅读了一段时间 但没有真正得到我想要的答案 我想知道的是 你们中是否有人真的在 Ruby 中使用了超过 4GB 的内存 如果这样编译 Ruby 真的是 64 位吗
  • Keras 导入错误 Nadam

    我在尝试导入 Keras 模块 Nadam 时遇到导入错误 gt gt gt from keras optimizers import Nadam Traceback most recent call last File
  • 通过 FTP over TLS/SSL 连接到未经认证的主机

    我从中获取文件的供应商正在从 FTP 更改为基于 SSL 的 FTP 我正在尝试更新我的代码net ftp to net ftptls 我需要连接的新主机未经认证 我的脚本报告此错误 主机名与服务器证书不匹配 供应商不会修复此问题 看着 u
  • 当行数变化时如何绑定向量和矩阵

    在迭代算法中 我在每个步骤中确定要考虑的一行 几行或不考虑进一步计算 为了存储感兴趣的行 我必须绑定两个变量 X id 和 X val 我目前使用 cbind X id X val 当 X id 和 X val 都是矩阵时 它工作得很好 X
  • 使用 cts:query 检查属性是否缺失

    我有一个 XML 片段 我希望根据 id 属性的存在进行不同的查询
  • 在 Emacs ruby​​ 模式下使用制表符缩进而不是空格

    我一直在尝试配置 Emacs 以便在缩进 Ruby 代码时插入一个 制表符 而不是一系列 空格 到目前为止 我已经尝试设置 varruby indent tabs mode to t这样 根据文档 它将 如果非零 则在 ruby 模式下插入
  • 线程安全框架

    以下类不是线程安全的 如证明以下代码不是线程安全的 https stackoverflow com questions 2410499 proving the following code not thread safe 是否有一个框架可以