2010-12-14 58 views
5

是否有任何有关测试多线程代码的指导原则(除了在问题和交叉手指上引发一堆线程之外)。有关测试多线程代码或确保代码是线程安全的指导原则

我基本上正在寻找测试数据损坏,死锁和其他并发问题的好方法。本质上,我希望能够通过测试证明代码是线程安全的。

Java中是否有任何框架可让您轻松编写多线程场景的测试?

+4

怎么样做代码评论?有没有 – 2010-12-14 21:34:10

+0

这是关于测试工具,而不是指南,但也许它会帮助你:http://stackoverflow.com/questions/3256064/how-to-write-multi-threaded-unit-tests – Todd 2010-12-14 21:35:31

+0

可能想看看下面的相关问题:http://stackoverflow.com/questions/1634378/is-there-a-tool-for-java-similar-to-microsofts-chess – Guy 2010-12-14 21:35:43

回答

3

我写了大量的多线程代码,从来没有发现任何可以轻松测试并发性问题的东西,我没有预测到。大多数情况下,我必须考虑可能会中断的情况,然后我可能会在极端版本中证明它的正确性(通常使用CountDownLatches或类似的方法以我认为可能会中断的方式进行弯曲。)

绝对使用FindBugs和类似的静态分析工具来帮助发现潜在的问题,并且确保尽可能简单地保持并发问题。共享可变内存问题很难,但实际上很容易重新定义问题,因此您不会共享可变状态,只有不可变的状态,这会让生活变得更加简单哦,并且读取JCiP - 然后再读一遍,然后让你的代码复习一下