Senhores, acho que jah descobri meu problema... Dado o sono eu estava startando as threads eu seus construtores, logo, quando eu dava o start dendo do metodo Start da applet, as threads acavam ficando presas...
Resolvi o problema tirando todos os starts de dentro da applet e jogando as instanciação das threads fora dos construtores ou metodos da applet. Grato a todos Marcelo Magno > -----Original Message----- > From: Marcelo Magno > Sent: quarta-feira, 16 de outubro de 2002 18:48 > To: '[EMAIL PROTECTED]' > Subject: Ajidinha com Threads em applet > > > Senhores, tenho uma JApplet que implementa runnable, > onde eu estou tendo problemas para startar a terceira thread > (no codigo, seria escutaServlet). Uma caracteristica do meu > codigo eh usar a tal da JApplet (que por implementar swing eu > sei que tenho de mexer em sua interface pelos metodos > listenners) e ter dentro de cada thread que eu to tentando > startar um loop infinito while(true). > > Quando eu starto a primeira thread eu nunca consigo > startar a segunda... Imaginem que nesse primeiro momento eu > nao tenha problemas de sincronização e estivesse executando 3 > threads literamente sem concorrencia entre si (soh para > testar). Na minha cabeca, quando eu desse o yield e/ou > colocasse a thread para durmir, ele deveria tirar a thread > atual da fila de execucao e passar a vez para o proxima. no > meu codigo, parece que o fluxo de execucao quando starta a > primeira thread vai para dentro dessa thread e nao volta mais. > > Alguem poderia me dar uma luz e me dizer onde eu to errando? > > Obrigado a todos. > Marcelo Magno > > > Meu codigo tah mais ou menos assim: > > * No construtor da applet eu instancio a thread da applet assim: > > Thread tApplet = new Thread(this); > tApplet.start(); > > * No metodo Start dessa applet eu faco assim: > > FalaComServlet falaComServlet = new FalaComServlet(); > falaComServlet.start(); > // EU NUNCA CONSIGO PASSAR DAKI E STARTAR ESSA PROXIMA THREAD > EscutaServlet escutaServlet = new EscutaServlet(); > escutaServlet.start(); > > * No metodo run assim: > public void run() > { this.setVisible(true); > while (true) > { > System.out.println("Run da principal"); > try > { Thread.yield(); > Thread.sleep(1000); > } catch(Exception e) > { e.printStackTrace(); > } > this.update(this.getGraphics()); //paint > } > } > > e no metodo run de cada Thread que fala com o servlet eu faco assim: > public void run() > { while (true) > { > System.out.println("EscutaServlet Rodando..."); > try > { Thread.yield(); > Thread.sleep(1000); > > } catch (Exception e) > { e.printStackTrace(); > } > } > } > ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------