| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2009 10:06:30
|
marcusbiava
JavaBaby
Membro desde: 04/05/2009 13:57:22
Mensagens: 93
Localização: Floripa
Offline
|
Pessoal estou tentando achar a logica da saida dessas Threads mas não consigo alguem tem alguma dica macete
This message was edited 2 times. Last update was at 31/07/2009 11:15:10
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2009 11:23:40
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20576
Localização: Curitiba/PR
Offline
|
Vamos ver...
Main-Linha13: Imprime "StartMain"
Main-Linha14: Criada a thread1
Thread1-Linha 26: Adquire o resource
Thread1-Linha 27: Imprime "Start"
Thread1-Linha 28: Pausa por 6 segundos
Main-Linha15: Pausa por 1 segundo
Main(1 seg depois)-Acorda
Main-Linha16: Cria a thread 2
Main-Linha17: Inicia a thread 2
Thread2: Linha 26, Tenta adquirir o resource. Está de posse da thread1, portanto, dorme
Main-Linha18: Dorme por mais 1 segundo.
Main-Linha19: Chama interrupt na thread 2. Não está no delay, não lança exceção
Main-Linha20: Dorme por mais 1 segundo.
Main-Linha21: Imprime "EndMain"
Thread1 (após 3 segs): Acorda
Thread1-Linha 29: Imprime "End1");
Thread1-Linha 30: Libera o resource e finaliza
Thread2-Linha 36: Consegue adquirir o resource
Thread2-Linha 37: Imprime "Start2"
Thread2-Linha 38: dorme por 2 segundos
Thread2-Linha 39: Imprime "End2"
Thread2-Linha 40: Libera o resource e finaliza
This message was edited 1 time. Last update was at 31/07/2009 11:24:12
|
@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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2009 11:31:10
|
marcusbiava
JavaBaby
Membro desde: 04/05/2009 13:57:22
Mensagens: 93
Localização: Floripa
Offline
|
ViniGodoy valeu cara você poderia pegar o trabalho da JVM rs rs rs rs rs.
Qual é o segredo cara???
This message was edited 1 time. Last update was at 31/07/2009 11:32:21
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2009 14:01:10
|
lfelipelias
Debugger
![[Avatar]](/images/avatar/a9d7939a3ca26fe606e81bdc33d0c8bc.jpg)
Membro desde: 08/07/2009 07:23:39
Mensagens: 63
Offline
|
Meu Thread é complicado mesmo pegar a manhã, alguém tem alguma dica que ajudou a entender os códigos de Thread?
|
SCBCD 5 90%
SCJP 1.6 90%
SCWCD 5 89% |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2009 14:06:41
|
marcusbiava
JavaBaby
Membro desde: 04/05/2009 13:57:22
Mensagens: 93
Localização: Floripa
Offline
|
Tambem estou esperando alguma ajuda
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2009 14:17:11
|
lfelipelias
Debugger
![[Avatar]](/images/avatar/a9d7939a3ca26fe606e81bdc33d0c8bc.jpg)
Membro desde: 08/07/2009 07:23:39
Mensagens: 63
Offline
|
Quando ao interrupt deixa eu ver se eu entendi..
Se você chamasse interrupt() em t1 ele lançaria uma InterruptedException e pularia para linha 7 e após executar o bloco catch retornaria para o bloco try caso houvesse mais alguma instrução e continuaria no bloco try até terminar?
Ou depois terminar a execução do bloco catch ele sairia sem continuar o resto do bloco try (caso houvessem mais instruções no bloco try)?
|
SCBCD 5 90%
SCJP 1.6 90%
SCWCD 5 89% |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2009 07:52:50
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20576
Localização: Curitiba/PR
Offline
|
Não tem muito segredo... vc tem que imaginar que cada thread é um programa rodando em paralelo. O método interrupt() faz com que os métodos sleep() e wait() das threads sejam interrompidos e disparem uma InterruptedException. Além disso, faz com que o método Thread.isInterrupted() passe a retornar true. Métodos como esse "delay" são pouco recomendados. O ideal é organizar os whiles de suas threads assim: Note que, dessa forma, se o interrupt() for chamado quando a thread estiver fora de um sleep() ou wait(), o while irá parar. Isso pq garantimos isso com a cláusula !Thread.isInterrupted(). Caso seja chamado dentro do sleep ou wait, o while também para, já que o try, catch desviará o fluxo para fora. É assim que você faz com que threads sejam interrompidas. Você organiza o código para que o interrupt naturalmente feche a thread. E garante que um código de finalização seja executado (para você fechar arquivos, conexões com o BD, etc). Fazendo assim, você não precisará usar o método stop(), que é deprecated.
This message was edited 1 time. Last update was at 01/08/2009 07:53:20
|
@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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2009 08:13:58
|
marcusbiava
JavaBaby
Membro desde: 04/05/2009 13:57:22
Mensagens: 93
Localização: Floripa
Offline
|
ViniGodoy valeu novamente cara
|
|
|
 |
|
|