O método connect por sua vez cria um thread e cria o GUI. Porém o thread não fica executando, ele apenas mostra a mensagem uma vez. a Mensagem da classse Client:
Se quiser que repita, é necessário um laço de repetição.
G
GustavoBorba
Que tipo de laço de repetição eu poderia por? Eu queria um por exemplo, enquanto o aplicativo estiver aberto, executar thread.
Diabo_Loiro
use um loop com uma flag.
emquando for para rodar deixa a flag com true.
quando o seu programa for encerrar seta a flag para false.
pseudo codigo while(flag) .
G
GustavoBorba
Eu até já conheço o while(true) mas eu acho que ele executa muito rápido e causa que o código seguinte fique inacessível. Então coloquei ele como última cosia no método e tentei usar thread.sleep(500); mas o Netbeans diz que thread.sleep(); em loops pode causar problemas de desempenho. Como posso driblar isso?
Diabo_Loiro
se quiser deixar mais lento tem usar thread.sleep mesmo.
G
GustavoBorba
então cara, tentei o seguinte:
Runnable runnable = new Client();
Thread thread = new Thread(runnable);
while(true)
{
thread.start();
}
mas recebo essa exeção:
<blockquote>Exceptioninthread“main”java.lang.IllegalThreadStateException
teste
atjava.lang.Thread.start(Thread.java:638)
atapplication.bin.client.User.connect(User.java:23)
atapplication.bin.Main.main(Main.java:21)</blockquote>
Nessa exeção, ele diz que eu estou iniciado o thread de maneira incorreta(?)
Sobre o thread não repetir, no livro que eu estou lendo “Use a Cabeça: Java”, ele mostra um simples exemplo de thread que repete e é idêntico ao meu! O que há de errado com o meu?
Eric_Yuzo
O problema é que a thread está sendo iniciada mais de uma vez.