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]
-------------------------------------------------------------------------