4

私はこのコードを使用しExecutorServiceてJavaで取得しています:

this.exec = Executors.newSingleThreadExecutor();

ここで、処理されたジョブの数、キューにあるジョブの数 (最も重要なこと!)、および基本的に取得できるすべての情報を知りたいと思います。しかし、普通のExecutorService人はこの情報を持っていません。しかし、この質問の回答によると、それが返されるため、型キャストできThreadPoolExecutorます。それは簡単に聞こえますが、1 つ問題があります。マシンが戻ってこないThreadPoolExecutor

代わりにjava.util.concurrent.Executors$FinalizableDelegatedExecutorService、クラスが表示されないため、それに型キャストしようとすると不可能です。

では、どうすれば自分のステータスを確認できますExecutorServiceか?

あなたが非常に興味があり、私が私のものを何に使っているか知りたい場合は(それが重要な場合)、私が以前に尋ねたこの質問ExecutorServiceを読んでください. これは基本的に SQL ステートメント用です。

4

1 に答える 1

4

オプション1

独自の ThreadPoolExecutor を作成できます。これが次のことnewFixedThreadPoolです。

ExecutorService executor = new ThreadPoolExecutor(nThreads, nThreads,
                                  0L, TimeUnit.MILLISECONDS,
                                  new LinkedBlockingQueue<Runnable>());

その後、キューへの参照を保持して、キューがどれだけいっぱいかを確認できます。受信したジョブ数のカウンターを保持する修正版を渡すこともできます。

オプション 2

タスクがいつ完了したかを知るのExecutorCompletionServiceに役立つ を使用できます。その後、送信したジョブの数と完了したジョブの数を数えることができます。

于 2012-12-12T12:34:34.687 に答える