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

Responder a