Thread que está encavalando uma na outra

Boa tarde Senhores.

Amigos, eu estou com um problemão em um sistema que eu estou dando manutenção e ele está dando muita dor de cabeça.

Nesse projeto, re-inventaram a roda até não poder mais, e qual o resultado disso, bug, bug e mais bug.

O que acontece, eu tenho uma aplicação que no core dela, ficam rodando infinitas threads para gerenciar todo e qualquer evento existente no projeto. É um projeto que foi feito em swing, awt e etc.

Ql meu problema, eu tenho alguns componentes que ao serem carregados as vezes o sistema se perde todo e os dados do componente ficam perdidos. Olha, parece bizarro, mas infelizmente quando eu cheguei já estava assim, e eu não posso mexer nos componentes que existem. Eu analisei o problema e cheguei a conclusão que o que está bagunçando geral é a porrada de thread que os caras criaram. Tem como eu controlar a execução dessas threads?
Eu inseri um sleep em algumas classes e resolveu, mas asim, eu acho que é muita gambiarra. Tá certo que gambiarra por gambiarra eu já estou com um sistema todo gambiarrado, mas eu queria tentar controlar de alguma forma no mínimo elegante, os eventos que ele dispara.

Eu pensei em criar um framework para controlar a execução de thread mas eu não tenho idéia de por onde começar.

Se alguém puder me dar uma idéia legal, eu ficaria muuuito agradecido.

[quote=Lenin666]Boa tarde Senhores.

Amigos, eu estou com um problemão em um sistema que eu estou dando manutenção e ele está dando muita dor de cabeça.

Nesse projeto, re-inventaram a roda até não poder mais, e qual o resultado disso, bug, bug e mais bug.

O que acontece, eu tenho uma aplicação que no core dela, ficam rodando infinitas threads para gerenciar todo e qualquer evento existente no projeto. É um projeto que foi feito em swing, awt e etc.

Ql meu problema, eu tenho alguns componentes que ao serem carregados as vezes o sistema se perde todo e os dados do componente ficam perdidos. Olha, parece bizarro, mas infelizmente quando eu cheguei já estava assim, e eu não posso mexer nos componentes que existem. Eu analisei o problema e cheguei a conclusão que o que está bagunçando geral é a porrada de thread que os caras criaram. Tem como eu controlar a execução dessas threads?
Eu inseri um sleep em algumas classes e resolveu, mas asim, eu acho que é muita gambiarra. Tá certo que gambiarra por gambiarra eu já estou com um sistema todo gambiarrado, mas eu queria tentar controlar de alguma forma no mínimo elegante, os eventos que ele dispara.

Eu pensei em criar um framework para controlar a execução de thread mas eu não tenho idéia de por onde começar.

Se alguém puder me dar uma idéia legal, eu ficaria muuuito agradecido.[/quote]
Provavelmente você está com esse problema porque duas ou mais threads estão acessando a mesma instância de um objeto ou variável que não é imutável. Se for isso, acredito que a declaração synchronized nos objetos que as threads manipulam resolverá seu problema.