ajuda com thread - como implementar uma espera de execução  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
dreampeppers99
Virtual Machine Man
[Avatar]

Membro desde: 29/08/2006 21:50:17
Mensagens: 523
Offline

A situação é a seguinte, quero executar uma thread e se em dez segundos ela não fazer o que foi designado a ela eu possa interromper e dar uma mensagem ao usuário... algo mais ou menos o código abaixo.

Qual o jeito pra se fazer isso (inclusive suspendendo a thread (secundária))?




O Fluxo do que desejo é assim:

  • 1º executo minha aplicação (uma thread)

  • 2º "lanço" a execução de uma 2º thread

  • 3º se a 2º thread não acabar o que ela tiver que fazer em 10s, então eu a suspendo assim como também posso lançar uma execeção mais elegante à aplicação.
  • This message was edited 2 times. Last update was at 12/05/2008 11:16:22


    - Não respondo dúvida por PM!
    - Blog -> Software development - Clojure, Ruby, Java, Test and little pumpkins
    - Blog - Desenvolvimento de software - Java
    [WWW]
    sergiotaborda
    GUJ Expert
    [Avatar]

    Membro desde: 22/03/2005 20:57:48
    Mensagens: 3433
    Offline

    Proponho que crie um java.util.concurrent.Executor. Vc configura-o com o tempo de timeout e passa quantos runnables quiser que ele execute.( não precisa trabalhar com thread directamente)

    Internamente vc usa um timer associado ao runable. Se o timer activar antes do fim do runable vc desativa-a enviando um Exception. Cuidado que isto pode destruir dados porque é fora do padrão convencionado para threads. Para poder criar este mecanismo vc precisa de um objeto auxiliar que contenha o timer e o runable associado e implemente a logica de controle. Esse objeto provavelmente terá que ser uma thread que possa receber o InterruptException do timer




    Lembre-se que o triger temporal pode acontecer depois de passado o tempo. O timer garante que não será executado antes do tempo, mas não garante que seja executado exactamente depois do tempo terminar.

    This message was edited 1 time. Last update was at 12/05/2008 12:50:55


    Criando sua própria API de Validação



    Blog do MiddleHeaven
    [WWW]
    dreampeppers99
    Virtual Machine Man
    [Avatar]

    Membro desde: 29/08/2006 21:50:17
    Mensagens: 523
    Offline

    Mas e no caso JDK 1.4.x?

    - Não respondo dúvida por PM!
    - Blog -> Software development - Clojure, Ruby, Java, Test and little pumpkins
    - Blog - Desenvolvimento de software - Java
    [WWW]
    dreampeppers99
    Virtual Machine Man
    [Avatar]

    Membro desde: 29/08/2006 21:50:17
    Mensagens: 523
    Offline



    Minha solução caseira (não se há algum problema em usá-la, consequências que meu entendimento em Thread não consegue ver) ... Pode ser usada assim? (nos meus testes, foi tudo bem, errou quando tinha que errar, fez certo quando tinha que fazer...)



    Será que existe algum problema nessa abordagem.?
    Na linha em que lança a execeção (mesmo que génerica) devo fazer uma atribuição a null (vi isso num site)?

    This message was edited 1 time. Last update was at 12/05/2008 15:53:43


    - Não respondo dúvida por PM!
    - Blog -> Software development - Clojure, Ruby, Java, Test and little pumpkins
    - Blog - Desenvolvimento de software - Java
    [WWW]
     
    Índice dos Fóruns » Java Básico
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team