2010-12-14 55 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 - 然後再讀一遍,然後讓你的代碼複習一下