Domanda

Mi stavo chiedendo se c'è qualche framework o applicazione (app) / programma là fuori che può analizzare la concorrenza di qualsiasi codice Java?

Se lo strumento conosce tutte le implementazioni delle classi e dei metodi spediti JRE, si riduce a un semplice analisi dei blocchi e del metodo sincronizzati e delle loro gerarchie di chiamata.Da qui può creare una rete Petri e dirti sicuramente se potessi mai sperimentare un deadlock.

Mi sto perdendo qualcosa o è davvero così facile?Poi ci deve essere uno strumento interessante facendo quel tipo di cose?O tale strumento potrebbe riportare troppi deadlock possibili risparmio completamente a causa di alcuni programmi / logica aziendale sottostanti?Le reti di Petri dovrebbero essere abbastanza potenti da gestire queste situazioni?

Questo salverebbe così tante ore di uomo di ricerca di bug che potrebbero o potrebbero non essere correlati a problemi di blocco morti.

È stato utile?

Soluzione

Sebbene (molti) bug relativi alla concorrenza siano disponibili utilizzando l'analisi del codice statico, non si applica a ogni tipo di bug.Alcuni bug appaiono solo in fase di esecuzione in determinate condizioni.

IBM ha uno strumento chiamato Concorso " Orari L'esecuzione dei thread del programma in modo tale che gli scenari del programma contengano probabilità di contenere condizioni di razza, deadlock e altri bug intermittenti (chiamati collettivamente denominati problemi di sincronizzazione) sono costretti ad apparire con alta frequenza ".

Ciò richiede test di esecuzione (unità) contro una versione strumentata della tua app.Altre informazioni di base in questo Articolo Sviluppatore .

Altri suggerimenti

Questa carta descrive uno strumento che esegue l'analisi statica diUna biblioteca e determina se è possibile il deadlock.

Qualche parte:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top