2010-12-14 7 views
5

Esistono linee guida per testare il codice multi-thread (a parte lanciare un mucchio di thread sul problema e incrociare le dita).Linee guida per testare il codice multithreading o assicurare che il codice sia thread-safe

Sono fondamentalmente alla ricerca di buoni modi per testare la corruzione dei dati, i deadlock e altri problemi di concorrenza. Essenzialmente voglio essere in grado di dimostrare che il codice è sicuro per i thread tramite un test.

Esistono framework in Java che consentono di scrivere facilmente test per uno scenario con multithreading?

+4

Che ne dici di fare recensioni di codice? Molti errori comuni sono relativamente facili da individuare una volta che si assume che ci sono. –

+0

Si tratta di strumenti di test, non di linee guida, ma forse ti aiuterà: http://stackoverflow.com/questions/3256064/how-to-write-multi-threaded-test-tests – Todd

+0

Potrebbe voler dare un'occhiata ai seguenti argomenti domanda: http://stackoverflow.com/questions/1634378/is-there-a-tool-for-java-similar-to-microsofts-chess – Guy

risposta

3

Ho scritto molto codice multi-thread e non ho mai trovato nulla che possa facilmente verificare problemi di correttezza della concorrenza che non ho previsto. La maggior parte delle volte devo pensare allo scenario in cui si può spezzare e poi come potrei dimostrarne la correttezza in una versione estrema di questo (spesso usando CountDownLatches o simili per piegarlo nei modi che penso possa spezzare.

Utilizzare definitivamente FindBugs e strumenti di analisi statici simili per aiutare a individuare potenziali problemi e mantenere i problemi di concorrenza il più semplice possibile. Problemi di memoria mutabili condivisi sono difficili ma è in realtà abbastanza semplice ridefinire il problema in modo da non condividere la mutevole stato, solo stato immutabile.Questo rende la vita molto più semplice.Oh, e leggi JCiP - poi leggi di nuovo.E ottieni il tuo codice revisionato.

Problemi correlati