Pergunta

Eu queria saber se há qualquer estrutura ou aplicativo (aplicativo) / programa que pode analisar a concorrência de qualquer código Java?

Se a ferramenta conhece todas as implementações das classes e métodos enviados JRE, ele resume a uma análise simples de blocos e métodos sincronizados e suas hierarquias de chamadas.A partir daqui, ele pode criar uma rede de Petri e dizer certeza se você poderia experimentar um impasse.

Estou perdendo em algo ou é tão fácil?Então deve haver alguma ferramenta legal fazendo esse tipo de coisa?Ou tal ferramenta relatariam muitos possíveis deadlocks que estão completamente salvos por causa de algum programa subjacente / lógica de negócios?Petri Nets deve ser poderoso o suficiente para lidar com essas situações?

Isso economizaria tantas horas de busca por insetos que podem ou não estar relacionados a problemas de bloqueio morto.

Foi útil?

Solução

Embora (muitos) erros relacionados com simultaneidade possam ser encontrados usando análise de código estático, não se aplica a todo tipo de bug.Alguns bugs aparecem apenas ao tempo de execução sob certas condições.

IBM tem uma ferramenta chamada concurso que "Atenda a execução de tópicos de programas de modo a que os cenários de programas que tendem a conter condições de corrida, deadlocks e outros bugs intermitentes (coletivamente chamados de problemas de sincronização) são forçados a aparecer com alta frequência ".

Isso requer testes de execução (unidade) contra uma versão instrumentada do seu aplicativo.Mais informações de fundo neste DeveloperWorks Artigo .

Outras dicas

Este papel descreve uma ferramenta que realiza análise estática deuma biblioteca e determina se o impasse for possível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top