Temporizador em segundo plano

3 respostas
java
Isaiaslima15

Bom dia, estou com um problema em lógica, vocês podem ter se deparado com esse problema e talvez já até o tenham resolvido.

Preciso contar o tempo de “vida” da instancia de um objeto que faz consultas , geralmente seria usado um “loop infinito” fazendo consultas regularmente mas uma regra de negócio diz que só posso fazer essa consulta a cada 3 minutos. a primeira parte do problema eu resolvi criando uma uniqueInstance, assim a consulta vai ser unica durante o tempo de vida dela (ou até ela ser Anulada) , agora preciso criar um contador de tempo, para que quando completos exatos 3 minutos de vida essa instancia seja setada como NULL , entrando assim no meu condicional e criando uma nova uniqueInstance.

Após ler vi que muitos usavam um for, ou Thread.spleep… mas o problema está exatamente no momento em que ele criar um delay durante a atualização da página, ou seja, mesmo depois de criado a instancia a Visão fica comprometida.

Alguém pode me ajudar?

3 Respostas

peczenyj

eu não entendi a sua abordagem.

quando existe uma regra de negocios sobre uma consulta poder ser feita apos x tempos, eu uso a seguinte abordagem

  1. crio um objeto que representa um lock, onde apenas uma entidade/processo/thread vai poder fazer uso da consulta. isso é util se vc tiver diferentes processos que podem efetura esta consulta. apenas quem tem esse objeto pode consultar.

  2. quem controla o lock armazena o momento (timestamp, data, etc) da ultima consulta. quem tem o lock pergunta se pode fazer a consulta baseada no momento atual. se nao puder o codigo pergunta: mas falta quanto?

  • x segundos.

perceba que vc tem abordagens ai: vc pode criar um loop infinito perguntando se pode consultar. vc pode pegar quanto tempo falta e dormir. vc pode pedir pra ser acordado em x segundos, etc.

veja se um lock faz sentido. no meu caso faz pq eu tenho diferentes processos em maquinas diferentes ai crio um lock no redis

Isaiaslima15

Você pode me explicar o que seria esse Lock?

peczenyj

pode ser um objeto qualquer que vc dá pra quem quer consultar e que, depois de usado, o cara retorna pra quem deu ( ou expira ).

Criado 29 de novembro de 2016
Ultima resposta 29 de nov. de 2016
Respostas 3
Participantes 2