ThreadPoolExecutor
コンストラクタは、待機中のジョブを格納するために使用されるQueue
実装であるBlockingQueue
パラメータを受け入れます。これではなくExecutors.newFixedThreadPool
や友人を使用しての明示的ThreadPoolExecutor
を構築する方が良いでしょう、この方法はExecutorService
インタフェースでは使用できないことを
System.out.println("Number of waiting jobs: "+executor.getQueue().size());
注:あなたは、キューのサイズを確認getQueue()
方法を使用してこのキューを要求することができます:
ThreadPoolExecutor executor = new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
OpenJDKの/ OracleJDKでExecutors.newFixedThreadPool
が同じことをしている間は、それはこのように、将来のバージョンのJavaまたは代替JDK実装でClassCastException
を引き起こす可能性が(ThreadPoolExecutor)Executors.newFixedThreadPool(nThreads)
を使用して、指定されていません。
を助け
ThreadPoolExecutor
BlockingQueue
希望を参照してください。また、arrayblockingqueueからいくつかのリソースをポーリングするために待機しているスレッドの数を取得する方法はありますか? – LoveMeow
@LoveMeow、私は疑いがあります。しかし、 'ThreadPoolExecutor'の' getTaskCount() '、' getActiveCount() 'などの他のメソッドをチェックすることができます。おそらくあなたの質問に答えます。 –