Boa tarde pessoal,
Estou tentando executar duas threads em dois objetos diferentes (não estou usando sincronização, já que não acesso uma mesma variável) para melhorar o desempenho da minha aplicação. A idéia é executar uma método simultaneamente em duas threads, mas com objetos diferentes. Entretanto, eu faço uma verificação antes do código prosseguir e essa verificação consiste em analisar se as duas threads ainda estão ativas. Segue o código base do programa:
thread1 = new Thread(obj1);
thread2 = new Thread(obj2);
thread1.start();
thread2.start();
/*try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro com threads. Mensagem: " + e.getMessage());
} */
while (thread1.isAlive() || thread2.isAlive()) {
}
Percebam que as threads trabalham em dois objetos distintos, não havendo necessidade de sincronização de métodos. Entretanto, preciso que elas trabalhem simultaneamente, mas para o código prosseguir é necessário que as duas não estejam mais “vivas”. Por isso usei o while, pois o programa pára nessa linha enquanto as duas estiverem “vivas”. Mas, não está dando certo, pois a JVM lança uma exceção de ponteiro nulo. Em tese, acredito que essa é a lógica correta. Eu até tentei um join, como pode-se ver nas linhas comentadas, mas nem assim deu certo.
Gostaria de saber se existe uma maneira melhor de implementação. O que eu preciso é fazer com que o código abaixo do while seja executado depois das duas threads terem sido completadas. Mas quero manter a concorrência de execução.
Aguardo respostas
Danilo.