Pessoal, sou iniciante em java e estou com uma dificuldade com threads, tenho a impressao que é bem simples de resolver porém com o que li sobre o assunto nao consegui. Tenho o seguinte:
…
Thread p = new MinhaTread();
p.start();
new Thread(new NumLetras(p.getP(), this.txtpa, this.lblpa));
…
O que quero é que a segunda Thread só comece após a Thread p morrer. Tem jeito?? Agradeço desde ja.
deu erro… eu vou melhorar o meu problema e talvez tenha uma solução mais eficiente. Tenho isso:
new Thread(new NumLetras(JOptionPane.showInputDialog("Digite a palavra"), this.txtpa,this.lblpa)).start();
new Thread(new PreencheBarra(this.txt1, this.barra)).start();
new Thread(new PreencheBarra(this.txt2, this.barra1)).start();
new Thread(new PreencheBarra(this.txt3, this.barra2)).start();
new Thread(new PreencheBarra(this.txt4, this.barra3)).start();
O que acontence é que enquanto eu nao entro com a palavra as outras Threads nao iniciam até ai normal, mas o que preciso é que de algum jeito as outras Threads iniciem e aquela Thread aguarde até que eu entre com a nformação e depois inicie…O que tentei fazer antes foi outra Thread pedindo a palavra, inicialmente até funcionou porem a Thread que precisa da palavra inicia sem a palavra e da erro… a ideia de esperar aquela Thread terminar era pra isso.
[quote=vdb]Faca assim:
Thread p = new MinhaTread();
p.start();
try {
p.join();
} catch (InterruptedException e) { }
new Thread(new NumLetras(p.getP(), this.txtpa, this.lblpa)).start();
“NumLetras” esta implementando Runnable ?
“MinhaThread” esta extendendo Thread ?
Tente colocar o JOptionPane.showInputDialog fora da chamada da thread
String opcao = JOptionPane.showInputDialog("Digite a palavra");
new Thread(new NumLetras(opcao, this.txtpa,this.lblpa)).start();
new Thread(new PreencheBarra(this.txt1, this.barra)).start();
new Thread(new PreencheBarra(this.txt2, this.barra1)).start();
new Thread(new PreencheBarra(this.txt3, this.barra2)).start();
new Thread(new PreencheBarra(this.txt4, this.barra3)).start();
Colocando o JOptionPane antes da chamada fico na mesma, estou pesquisando sincronismo pra ver se consigo resolver com o join trava tudo.
[quote=vdb]Tente colocar o JOptionPane.showInputDialog fora da chamada da thread
String opcao = JOptionPane.showInputDialog("Digite a palavra");
new Thread(new NumLetras(opcao, this.txtpa,this.lblpa)).start();
new Thread(new PreencheBarra(this.txt1, this.barra)).start();
new Thread(new PreencheBarra(this.txt2, this.barra1)).start();
new Thread(new PreencheBarra(this.txt3, this.barra2)).start();
new Thread(new PreencheBarra(this.txt4, this.barra3)).start();