private void procurarJogada() throws InterruptedException {
List<Jogada> l = tab.getPossiveis(pc);
IaThreads aux = new IaThreads(tab, pc, null, jogadores);
aux.limparAlfa();
Thread threads = null;
int a = 0;
ExecutorService executar = Executors.newFixedThreadPool(20);
for (Jogada jogada : l) {
a++;
aux = new IaThreads(tab, pc, jogada, 5);
threads = new Thread(aux);
executar.execute(threads);
System.out.println("=======================================");
System.out.println("executando treads: " + a);
System.out.println("testando variante: " + jogada.nome(tab));
}
System.out.println("=======================================\n\n");
Medida jogarPosicao;
threads = new Thread("espera");
ExecutorService threadExecutor = Executors.newFixedThreadPool(1);
try {
threads.sleep(30000);
threadExecutor.execute(threads);
if (threads.isInterrupted()) {
System.exit(0);
}
} catch (InterruptedException ex) {
System.out.println("treta na threads");
}
//espera 30 segundos para realizar a jogada;
jogarPosicao = aux.getAlfa();
if (jogarPosicao != null) {
System.out.println("jogando: " + jogarPosicao.getJ().nome(tab) + " valor: " + jogarPosicao.getValor());
tab.moverPeca(jogarPosicao.getJ().getPeca(), jogarPosicao.getJ());
t.atualizar(tab);
tab.setJogou(false);
}
System.out.println("Jogadas total = " + aux.getTotalJogadas());
}
o problema é o seguinte, como eu faço para o programa espera finalizar a execução de todas as threads, ou após um tempo maximo continuar o programa?
da forma como esta ele sempre ira esperar 30 segundos para realizar uma jogada, mas muitas vezes o calculo ja é concluido bem antes, mas outras vezes é nessessario mais para executar todas as threads.
pesquisei sobre threads mas não achei nenhum comando que resolveria meu problema.
