galera… eu so meio inicante, e to precisando de uma ajuda aki… eu fiz uma Thread aqui, que vai loopa 15 vezes e da um wait, mais não ta dando certo…preciso da ajuda de vcs…
desse jeito da java.lang.IllegalMonitorStateException, copiei a mensagem ai em baixo:
Exception in thread "Thread-2" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at Janela.run(Janela.java:116)
at java.lang.Thread.run(Thread.java:619)
public void run(){
while(true){
for (int cont=0;cont<16;cont++){
System.out.println("loop"+cont);
...
}
synchronized(this) {
try {
Thread.currentThread().wait(5000); // <<----------- linha 116
} catch (InterruptedException ex) {}
}
}
}
eu tentei tb cria um metodo pra sincroniza o problema é que o wait nele nao ta funcionando direito…veja o codigo:
public void run(){
while(true){
for (int cont=0;cont<16;cont++){
System.out.println("loop"+cont);
...
}
esperar();
}
}
synchronized public void esperar(){
System.out.println("entro no metodo");
//JOptionPane.showMessageDialog(null, "entro no metodo");
try {
esperando=true;
t.wait(300000);//5 minutos
} catch (Exception e) {
}
}
synchronized public void voltar(){
try {
notifyAll();//voltar a thread
esperando=false;
} finally {
}
}
//esse metodo é o chamado ao ser apertado o botão da minha interface grafica
public void acaoinicio1(ActionEvent e){
if (esperando==true)
voltar();
if (prencheu)
para[1]=false;
else
JOptionPane.showMessageDialog(null, "Para iniciar os testes, insira algum valor no campo quantidade de perdas");
}
vejam a saida:
init:
deps-jar:
compile-single:
run-single:
loop0
loop1
loop2
loop3
loop4
loop5
loop6
loop7
loop8
loop9
loop10
loop11
loop12
loop13
loop14
loop15
entro no metodo
loop0
loop1
loop2
loop3
loop4
loop5
loop6
loop7
loop8
loop9
loop10
loop11
loop12
loop13
loop14
loop15
entro no metodo
loop0
a saida nao ta errada, o problema é que não ta correndo o tempo do wait pra seguir a thread e reloopa…e eu tb não apertei o botão…
alguem ai pode me ajudar???
