2011-05-22 46 views
4

我想知道是否有任何框架或应用程序/程序可以分析任何Java代码的并发性?并发代码分析器

如果该工具知道jre发布的所有类和方法的实现,那么它归结为对同步块和方法及其调用层次结构的简单分析。从这里可以创建一个Petri网,并且可以肯定地告诉你,如果你能经历一个僵局。

我错过了什么,或者这真的很容易?那么必须有一些很酷的工具来做这种事情?或者,这样的工具是否会报告由于一些潜在的程序/业务逻辑而完全保存的可能的死锁? Petri网应该足够强大来处理这些情况?

这样可以节省很多人工时间来搜索可能会或可能不会与死锁问题相关的错误。

+0

我认为,它可能发送任何同步代码到使用正确定时'Thread.stop'无限循环。 – Antimony 2012-11-03 01:06:34

回答

5

尽管可以使用静态代码分析找到(很多)并发相关的错误,但它并不适用于每种类型的错误。一些错误只会在特定条件下在运行时出现。

IBM有一个称为工具ConTest该程序线程“调度执行,使得有可能包含竞态条件,死锁和其它间歇臭虫(统称同步问题)程序场景被迫出现频率高”。

这需要针对您的应用的检测版本运行(单元)测试。在这developerWorks article更多的背景资料。

+0

ConTest仍然可以在某处下载?搜索它的年龄,但AlphaWorks更新,没有链接下载(或至少它不显示一个简单的serach),并找不到任何二进制文件,只是教程和论文......预先感谢! – rlegendi 2012-09-26 13:50:55

1

This本文描述了一个工具,它执行库的静态分析并确定死锁是否可能。