Java sleep

3 respostas
lucasdona

Boa tarde galera, se tenho uma aplicação rodando 24 hrs por dia e fica aguardando a chegada de uma mensagem via sock por exemplo, mas depois que recebe essa mensagem, isso só será executado no outro dia.
Qual a melhor forma de deixar a aplicação dormindo e só voltar a verificação quando virar o dia?
Exemplo.
Agora são 16:23, fico verificando a chegada de um pacote de 10 em 10 segundos, daí as 17:00 o pacote chega, então volto pra essa rotina de verificação só depois da meia noite. Então, teria que ficar dormindo 7 hrs, que são 25200 segundos que são 25200000 milisegundos. A melhor forma seria o Thread.sleep(25200000)?

Abraços.

3 Respostas

drsmachado

Me parece que você precisa usar thread e algum mecanismo que te permita identificar a hora atual e subtrai-la da zero hora do próximo dia, coisa que o joda-time faz com facilidade.

Marcelo_SCS

Sobre joda-time:

Embora eu acredite que usar o Quartz seja uma opção interessante também.
Ele permite agendar execuções como o crontab, programaticamente.

lucasdona

Será que compensa eu adicionar mais uma biblioteca no projeto só pra fazer isso? eu já tenho na aplicação um método que me informa a hora atual, somente a hora, só teria que fazer conta e colocar no Thread.sleep(time).
Gostaria de saber, se tem muita diferençá em relação a processamento, utilizar o joda-time pra fazer a aplicação dormir por horas ou usar o thread.sleep mesmo.

Criado 15 de dezembro de 2012
Ultima resposta 16 de dez. de 2012
Respostas 3
Participantes 3