2010-12-14 120 views
5

Existe-t-il des instructions pour tester le code multithread (autre que de lancer un tas de threads sur le problème et de croiser les doigts). Je recherche essentiellement de bons moyens pour tester la corruption de données, les interblocages, et d'autres problèmes de simultanéité. Essentiellement, je veux être en mesure de prouver que le code est thread-safe via un test.Recommandations pour tester le code multithread ou s'assurer que le code est sûr pour les threads

Y a-t-il des frameworks Java qui vous permettent d'écrire facilement des tests pour un scénario multithread?

+4

Qu'en est-il de faire des critiques de code? Beaucoup d'erreurs communes sont relativement faciles à repérer une fois que vous supposez qu'ils sont là –

+0

Il s'agit d'outils de test, pas de lignes directrices, mais peut-être cela vous aidera-t-il: http://stackoverflow.com/questions/3256064/how-to-write-multi-threaded-unit-tests – Todd

+0

Peut-être que vous voulez regarder ce qui suit question: http://stackoverflow.com/questions/1634378/is-there-a-tool-for-java-similar-to-microsofts-chess – Guy

Répondre

3

J'ai écrit beaucoup de code multithread et je n'ai jamais rien trouvé qui puisse facilement tester les problèmes d'exactitude de concurrence que je n'ai pas prévus. La plupart du temps je dois penser au scénario dans lequel il peut casser et ensuite comment je pourrais prouver son exactitude dans une version extrême de ceci (utilisant souvent CountDownLatches ou semblable pour le plier de la manière que je pense qu'il peut casser.)

Utilisez certainement FindBugs et des outils d'analyse statique similaires pour aider à trouver des problèmes potentiels, et certainement garder vos problèmes de concurrence aussi simple que possible.Les problèmes de mémoire partagée mutable sont difficiles mais il est en fait assez facile de redéfinir le problème. état, seul état immuable.Cela rend la vie beaucoup plus simple.Oh, et lire JCiP - puis relire.Et obtenir votre code revu