我有一個固定的線程池,在任何時候(有一個隊列)運行7個併發線程,我想把它變成一個只運行7個併發作業的預定線程池,但可以排隊/時間表更多。固定線程池和預定線程池之間的Java差異
閱讀該文檔並沒有真正幫助我..
公共靜態的ExecutorService的newFixedThreadPool(INT來確定nthreads)
創建一個可重用操作一組固定的線程的線程池關閉 一個共享的無界隊列。如果任何線程在關閉之前的執行期間由於失敗 而終止,則如果 需要執行後續任務,則新的線程將取代它。
參數: 來確定nthreads - 線程池中返回數量: 新創建的線程池
公共靜態ScheduledExecutorService的的newScheduledThreadPool(INT corePoolSize)
創建一個線程池,可以安排命令在給定的之後運行延遲或定期執行。
參數: corePoolSize - 保留在池中的線程數,即使它們處於空閒狀態。返回: 新創建的預定線程池
我不明白的是,corePoolSize和nThreads是一樣的東西嗎?預定的線程池是否是真正的固定線程池的子集,這意味着我可以使用調度的線程池作爲可以排隊延遲任務的固定線程池?
你能否詳細說明爲什麼你想要固定線程池以外的東西?您是否閱讀過[ScheduledExecutorService]的javadoc(http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html)? – 2011-05-17 22:06:08
我目前正在使用FixedThreadPool,但希望能夠在給定延遲後安排任務。例如,從現在開始的一小時內安排任務。以及能夠像我今天所做的那樣立即執行。 – 2011-05-17 22:08:44
它可能被稱爲一個Executors.newFixedScheduledThreadPool(n),但這是很多字母:/ – 2011-05-17 22:17:03