2

Java の Executor は (私が理解している限り) ThreadPool の概念を抽象化したものであり、タスクを受け入れて実行 (実行) できるものです。

ポーリングの概念について同様の例外を探しています。特定の Queue (これは を実装していません BlockingQueue) からアイテムを継続的にポーリング (デキュー) し、それらを実行してスリープ状態にし、シャットダウンするまでこれをすべて繰り返す必要があります。

既製の抽象化はありますか、それとも自分で何かを書く必要がありますか?

(より良いタイトルの提案は大歓迎です)

4

1 に答える 1

2

ポーリングは簡単です:

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();

おそらく、あなたが何をしようとしているのか正確にはわからないので、質問を言い換える必要がありますか?

于 2009-07-07T06:43:07.733 に答える