第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

ExecutorService每次給一個(gè)新的線程池有什么問(wèn)題嗎?

ExecutorService每次給一個(gè)新的線程池有什么問(wèn)題嗎?

人到中年有點(diǎn)甜 2023-04-13 10:35:17
我有以下代碼,每次針對(duì)不同數(shù)量的線程執(zhí)行:class Worker<T> {  public void process() {      System.out.pritnln("Test");  }}class Processor {  private void doStuff(final Collection<Worker<V>> col) {    final int size = col.size();    if (size > 0) {      final ExecutorService threads = Executors.newFixedThreadPool(col.size());      for (Worker<V> w : col) {        threads.submit(() -> w.process());      }      threads.shutdown();    }  }}每次都在新的民意調(diào)查標(biāo)識(shí)符中打?。?pool-66-thread-1) 測(cè)試(pool-66-thread-2) 測(cè)試(pool-67-thread-1) 測(cè)試(pool-68-thread-1) 測(cè)試(pool-68-thread-3) 測(cè)試(pool-68-thread-2) 測(cè)試我想知道這是否是常見(jiàn)的行為,或者在某個(gè)時(shí)候發(fā)生內(nèi)存泄漏并且它會(huì)爆炸。它不應(yīng)該重用 previous 嗎pools?我怎么看,那些以前的池子已經(jīng)shutdown多虧了threads.shutdown()電話
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

我想知道這是否是常見(jiàn)行為,或者在某些時(shí)候存在內(nèi)存泄漏并且會(huì)爆炸。它不應(yīng)該重用以前的池嗎?

好吧,您一直在顯式創(chuàng)建新池。

// this creates a new pool
final ExecutorService threads = Executors.newFixedThreadPool(col.size());

至于內(nèi)存泄漏,因?yàn)槟P(guān)閉池,所以應(yīng)該沒(méi)問(wèn)題(但是為了finally安全起見(jiàn),以防萬(wàn)一)。

如果你想重新使用池(這很有意義),你應(yīng)該為threads你創(chuàng)建一個(gè)實(shí)例變量Processor(并確保在關(guān)閉方法中Processor implements AutoCloseable關(guān)閉它)。threads


查看完整回答
反對(duì) 回復(fù) 2023-04-13
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

您正在調(diào)用Executors.newFixedThreadPool()您的函數(shù),它創(chuàng)建了一個(gè)新的線程池。


這本身并沒(méi)有錯(cuò),但并不常見(jiàn),并且與使用線程池背后的許多動(dòng)機(jī)背道而馳。一種更標(biāo)準(zhǔn)的方法是在您的Processor類中創(chuàng)建一個(gè)線程池,并將作業(yè)分配給它,如下所示:


class Processor {

    private final ExecutorService service = Executors.newFixedThreadExecutor(count);


    private void doStuff() {

        ...

        ...

        service.submit(() -> w.process());

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-04-13
?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

擁有線程池的想法是限制您正在創(chuàng)建的線程數(shù)量并重用已經(jīng)創(chuàng)建的線程,以避免在給定時(shí)間不必要地?fù)砣幚泶罅烤€程并提高效率?,F(xiàn)在您的代碼的問(wèn)題是它既不限制線程數(shù)也不重用。由于您只進(jìn)行一些打印,因此您可能看不到擁塞,但如果您在 worker 中添加更多處理并繼續(xù)并行調(diào)用它,那么您將看到完成處理的嚴(yán)重延遲。



查看完整回答
反對(duì) 回復(fù) 2023-04-13
  • 3 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)