测试多线程代码或确保代码是线程安全的准则

时间:2010-12-14 21:32:22

标签: java multithreading unit-testing testing concurrency

是否有任何测试多线程代码的指导原则(除了在问题上抛出一堆线程并且交叉手指外)。

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

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

2 个答案:

答案 0 :(得分:3)

我编写了很多多线程代码,并且从未发现任何可以轻松测试我未预测的并发正确性问题的内容。大多数时候我不得不考虑它可能会破坏的情况,然后我会如何在极端版本中证明它的正确性(通常使用CountDownLatches或类似的方式以我认为可能会破坏的方式弯曲它。) p>

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

答案 1 :(得分:0)

GroboUtils,http://groboutils.sourceforge.net/testing-junit/using_mtt.html提供了一些用于测试线程的JUnit实用程序。