Duvida Threads??  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
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

ViniGodoy
Moderador
[Avatar]

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

lfelipelias
Debugger
[Avatar]

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%
marcusbiava
JavaBaby

Membro desde: 04/05/2009 13:57:22
Mensagens: 93
Localização: Floripa
Offline

Tambem estou esperando alguma ajuda
lfelipelias
Debugger
[Avatar]

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%
ViniGodoy
Moderador
[Avatar]

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
[WWW]
marcusbiava
JavaBaby

Membro desde: 04/05/2009 13:57:22
Mensagens: 93
Localização: Floripa
Offline

ViniGodoy valeu novamente cara
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team