[Resolvido] Thread não repetindo?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

Tenho uma classe chamada User, que é o usuário:



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:


porque o thread não fica executando?

Grato desde já, Gustavo Borba.

This message was edited 3 times. Last update was at 15/12/2010 00:26:01

Eric Yuzo
GUJ Ranger
[Avatar]

Membro desde: 25/10/2009 20:36:30
Mensagens: 956
Localização: São Vicente - SP
Offline

A thread faz o que tem que fazer e encerra.

Se quiser que repita, é necessário um laço de repetição.

O importante mesmo é ser feliz!

DevSV
[WWW]
GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

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
GUJ Master
[Avatar]
Membro desde: 24/03/2009 07:46:14
Mensagens: 1040
Localização: Praia Grande - SP
Offline

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) .

This message was edited 2 times. Last update was at 15/12/2010 00:13:50


Sun Certified Java Associate
Sun Certified Java Programer 6.0
Sun Certified Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer

Blog
http://brunodanielmarinho.wordpress.com

Fals - Osum Leader
http://osum.sun.com/group/fals


GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

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
GUJ Master
[Avatar]
Membro desde: 24/03/2009 07:46:14
Mensagens: 1040
Localização: Praia Grande - SP
Offline

se quiser deixar mais lento tem usar thread.sleep mesmo.

This message was edited 1 time. Last update was at 15/12/2010 00:14:48


Sun Certified Java Associate
Sun Certified Java Programer 6.0
Sun Certified Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer

Blog
http://brunodanielmarinho.wordpress.com

Fals - Osum Leader
http://osum.sun.com/group/fals


GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

então cara, tentei o seguinte:



mas recebo essa exeção:
Exception in thread "main" java.lang.IllegalThreadStateException
teste
at java.lang.Thread.start(Thread.java:63
at application.bin.client.User.connect(User.java:23)
at application.bin.Main.main(Main.java:21)


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?

This message was edited 1 time. Last update was at 15/12/2010 00:22:55

Eric Yuzo
GUJ Ranger
[Avatar]

Membro desde: 25/10/2009 20:36:30
Mensagens: 956
Localização: São Vicente - SP
Offline

O problema é que a thread está sendo iniciada mais de uma vez.

O laço deve estar no método run de seu Runnable:

O importante mesmo é ser feliz!

DevSV
[WWW]
GustavoBorba
JavaChild

Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline

Valeu cara!
Eric Yuzo
GUJ Ranger
[Avatar]

Membro desde: 25/10/2009 20:36:30
Mensagens: 956
Localização: São Vicente - SP
Offline

Esqueci de por no exemplo que o Thread.sleep declara InterruptedException.

Mas que bom que resolveu seu problema.

Falou...

O importante mesmo é ser feliz!

DevSV
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

GustavoBorba wrote: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?


Você ignora o que o Netbeans está dizendo.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team