0

java.util.BlockingQueueによってサービスが必要なPOJOでいっぱいのがありますExecutorService。このキューは単一のスレッドによって処理される必要がありますが、一度に複数のスレッドからプッシュされます。

過去に、私はこのように見えるようにソリューションを作成しましたが、私は本当にそれを軽蔑しています:

executorService.execute(new Runnable() {

    @Override
    public void run() {
        while (true) {
            try {
                POJO job = blockingQueue.take();
                servicePOJO(job);
            } catch (InterruptedException e) {
                break;
            }
        }
    }
});

これを書くためのより良い方法はありますか、それともこれがそれを行うための最適な方法ですか?複数のコンシューマーを追加する必要がある場合は、実際のスレッドプールのサイズで上記をループで実行する必要があるためです。

4

1 に答える 1

0

オブジェクトごとのタスクでExecutorServiceを使用します。

public <POJO> void asyncServicePOJO(final POJO pojo) {
    executorService.execute(new Runnable() {
        @Override
        public void run() {
            servicePOJO(pojo);
        }
    });
}

余分なキューは必要ありません。

于 2012-08-11T06:35:10.117 に答える