鍍金池/ 問(wèn)答/Java/ 新手關(guān)于線程池的問(wèn)題

新手關(guān)于線程池的問(wèn)題

我們?cè)陧?xiàng)目中,啟動(dòng)一個(gè)線程的話(huà)是放入線程池中的。
在每次放入線程池中要 先創(chuàng)建出線程池:
ExecutorService executorService = Executors.newCachedThreadPool();
但是 如果在不同的類(lèi)中每次都new一個(gè)的話(huà)不就會(huì)產(chǎn)生好幾個(gè)線程池嗎,那線程池還有用嗎?
那不就相當(dāng)于一個(gè)池子里面也就放了一兩個(gè)線程,但是有很多池子?不知道是不是我理解錯(cuò)了,請(qǐng)大神們指教一下,謝謝!

回答
編輯回答
念初

是的,這種寫(xiě)法的確是創(chuàng)建了很多的線程池。
但是當(dāng)我們使用Executors.newXXXThreadPool()的時(shí)候是我們需要有這么一個(gè)線程池。
如果你想在全局中使用同一個(gè)線程池中的話(huà),可以試著去配置一個(gè)spring的bean作為線程池

clipboard.png
然后通過(guò)@Autowired 注入
` @Autowired
@Qualifier("poolTaskExecutor")
Executor executor;
`
使用線程中管理的線程

2018年4月20日 00:38
編輯回答
話(huà)寡

要看具體場(chǎng)景:

如果一個(gè)類(lèi)是 容器 類(lèi)型,無(wú)論它是單例與否,它都應(yīng)該有一個(gè)自己的線程池。

如果是個(gè)工廠型的類(lèi)型,也許你需要根據(jù)情況創(chuàng)建不同的線程池,那此時(shí)也不能用一個(gè) 全局/工廠實(shí)例 持有的線程池。

暫時(shí)想不到其他不能用全局線程池的情況了。

2018年9月19日 16:27