2015-10-16 64 views
0

ThreadPoolExecutor getActiveCount()是1但是getQueue返回空隊列,爲什麼?ThreadPoolExecutor getActiveCount()是1,但getQueue返回空隊列,爲什麼?

我有一個執行器,它的類型是ThreadPoolExecutor。

我打電話getActiveCount(),並得到了1,

,但是當我打電話getQueue.size(),它是0

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html#getQueue%28%29

我的代碼是這樣的。

System.out.println(taskExecutor.getActiveCount()); 
    System.out.println(taskExecutor.getThreadPoolExecutor().getQueue().size()); 

所以我很困惑,爲什麼這兩個不一樣?

回答

2

按的javadoc(重點煤礦)

getActiveCount():返回近似數量是積極執行任務的線程。

getQueue():返回此執行器使用的任務隊列

現在的說明... getQueue()返回隊列中的任務是等待待執行,一旦任務準備好執行,它將從隊列中取出並提供給線程。另外請記住,getActive()返回一個近似值,不應該用於任何類型的邏輯。

所以有2個可能的答案給你的問題。有一個任務正在運行......或者getActive()返回一個近似值。無論如何,沒有等待執行的任務。

相關問題