2015-12-14 67 views
1

我沒有清楚它是什麼意思是來自類java.util.concurrent.Executors的newScheduledThreadPool()方法的「corePoolSize」參數。這是什麼意思「corePoolSize」,newScheduledThreadPool()方法的參數?

如果我把一個更高的數字值和如果我把一個較低的數字值會發生什麼會發生什麼?

// corePoolSize = 1; 
java.util.concurrent.Executors.newScheduledThreadPool(corePoolSize); 

// corePoolSize = 5; 
java.util.concurrent.Executors.newScheduledThreadPool(corePoolSize); 

什麼是定義該值的正確方法是什麼?

回答

3

它在細節的ThreadPoolExecutor javadoc的解釋 - 摘錄:

當一個新的任務,方法execute(Runnable)被提交,只有不到corePoolSize線程在運行,創建一個新的線程來處理請求,即使其他工作線程空閒。如果有多於corePoolSize但小於maximumPoolSize的線程正在運行,則只有在隊列已滿時纔會創建一個新線程。

因此,它定義了是否應創建線程,取決於執行程序的狀態。

對於ScheduledExecutorService,如果您不打算在給定時間運行多個任務,則corePoolSize爲1可能更有效。如果需要,它不會阻止創建更多的線程。

+0

哦,好的,這是一個更好的解釋。謝謝。 –