Pergunta

Executor do Java é (tanto quanto eu entendo) uma abstração sobre o conceito ThreadPool -. Algo que pode aceitar e executar (execute) tarefas

Eu estou procurando uma excepção semelhante para o conceito Polling. Eu preciso continuamente poll (dequeue) itens fora de um específico Queue (que não implementa BlockingQueue), executá-los e dormir, e repetir tudo isso até o desligamento.

Existe uma abstração ready-made ou devo escrever algo em meu próprio?

(Sugestões de um título melhor são bem-vindos)

Foi útil?

Solução

Polling é fácil:

Thread t = new Thread(new Runnable() {
    public void run() {
        try {
            while (!t.isInterrupted()) {
               Object item;
               while ((item = queue.take()) == null) {//does not block
                   synchronized (lock) { lock.wait(1000L) } //spin on a lock
               }
               //item is not null
               handle(item);
            }
        } catch (InterruptedException e) { }
    }
});
t.start();

Talvez você precisa reformular a sua pergunta como eu não tenho certeza exatamente o que é que você está tentando fazer?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top