我有一個需求,我需要處理當前的現場演出一些任務。 這是一個計劃任務,每分鐘運行一次。Executors.newFixedThreadPool() - 這個操作有多昂貴
在一分鐘之內,可以有任意數量的現場表演(雖然數量不能說大,約最多10)。 所有現場演出需要完成超過20項功能。或者說有20個工人班,那裏都有工作。
讓我們來說說第一個功能,有5個節目,然後幾分鐘後顯示減少到2,然後幾分鐘後再顯示增加到7。
目前,我做這樣的事情,
int totalShowsCount = getCurrentShowsCount();
ExecutorService executor = Executors.newFixedThreadPool(showIds.size());
上述語句被執行的每一分鐘。
問題陳述
1)上面的操作多少昂貴是..?。在每個給定的分鐘創建fixedThreadPool。
2.)我可以做什麼來優化我的解決方案,我應該使用固定線程池,例如(10),也許3或5或6或任何數量的線程在任何給定的時間使用。
我可以在工作人員級別創建一個固定線程池,並維護它並使用該線程池: 。
僅供參考,使用Java8,如果有更好的方法可用。
你爲什麼每分鐘都重新創建一個新的'ExecutorService'?是不是可以實施一次(在啓動時)並且每次重複使用它? – Spotted
@斑點我有20名工人,每個工人都有自己的工作,我想爲所有工人創造獨立的泳池 - 我應該..?如果我爲所有工人創建共用池,可能是我工作人員消耗更多線程的情況,所有工人都會每分鐘啓動一次,可能會出現這樣一種情況,即我的一名工人沒有任何線程。 –
爲什麼不使用單個可調整大小的池('Executors.newCachedThreadPool')? – apangin