2017-09-02 8 views
2

私はexecutorserviceを使用してスレッドプールを作成しています。Executorサービスのキュー内のタスク数を取得する方法は?

ExecutorService executor = Executors.newSingleThreadExecutor(); 

スレッドプールのキューにあるタスクの数にアクセスしようとしています。私はそれを得る方法がないことがわかります。 私はthreadpoolexecutorでキューサイズを取得するメソッドがあることを知っていますが、どのようにexecutorserviceオブジェクトでそれを行うことができます。

私は私は私がのキュー内のタスクの数を取得するにはtpExecutor.queue.size()を使用することができます知っているこの

ThreadPoolExecutor tpExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>()); 

ようThreadpoolExecutorを作成している場合、私はキュー情報を取得することができます言ったようにスレッドプール。 現在、私はExecutor Serviceを使用してスレッドプールを宣言しています。どうやってやるの? 人々がコードを書いて実演できるのは相当なことです。

+0

'Executors.newFixedThreadPool(nThreads)' 'nThreads = 1'はどこですか? – nullpointer

+0

私はそれから何を得ますか?スレッドプールのキューにあるタスクの数を取得するにはどうすればよいですか?精巧にしてください。 – africandrogba

+1

'newSingleThreadExecutor()'が実際に 'ThreadPoolExector'の型を返すと仮定すると、オブジェクトをキャストしてhttps://docs.oracle.com/javase/8/docs/api/java/util/concurrent/を呼び出すことができますThreadPoolExecutor.html#getActiveCount--なぜ重要なのかわかりません。 – markspace

答えて

0

これをThreadPoolExecutorにキャストできます。

ThreadPoolExecutor ex =(ThreadPoolExecutor)executor; ex.getQueue()。size();

関連する問題