91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

web開發中使用無界隊列的線程池會不會導致內存飆升

發布時間:2022-10-17 17:41:48 來源:億速云 閱讀:103 作者:iii 欄目:編程語言

這篇文章主要介紹“web開發中使用無界隊列的線程池會不會導致內存飆升”,在日常操作中,相信很多人在web開發中使用無界隊列的線程池會不會導致內存飆升問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”web開發中使用無界隊列的線程池會不會導致內存飆升”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Executors創建線程池方式有如下幾種:

Executors.newFixedThreadPool(10);//LinkedBlockingQueue 無限加入隊列
Executors.newScheduledThreadPool(10);//DelayedWorkQueue 隊列如果滿了,阻塞
Executors.newSingleThreadScheduledExecutor();//DelayedWorkQueue 隊列如果滿了,阻塞
Executors.newCachedThreadPool();//SynchronousQueue 隊列如果滿了,拋異常
Executors.newSingleThreadExecutor();//LinkedBlockingQueue 無限加入隊列

本文以Executors.newFixedThreadPool為例 定長線程池,核心線程數和最大線程數由用戶傳入,超出在隊列等待,以下為相關源碼。

//newFixedThreadPool創建線程池源碼
public static ExecutorService newFixedThreadPool(int nThreads){
        /**
          *  corePoolSize : 核心線程的數量為自定義輸入nThreads

          *  maximumPoolSize : 最大線程的數量為自定義輸入nThreads

          *  keepAliveTime : 0L

          *  unit : 秒

          *  workQueue : LinkedBlockingQueue
          **/
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue<Runnable>());
    }

newFixedThreadPool和SingleThreadExecutor類似,唯一的區別就是核心線程數不同,并且由于使用的是LinkedBlockingQueue。LinkedBlockingQueue默認的最大任務數量是Integer.MAX_VALUE,非常大,可以理解為無限大吧;但是存在這種情況,當每個線程獲取到一個任務后,執行時間比較長,導致workQueue里積壓的任務越來越多,機器的內存使用不停的飆升,最后也會導致OOM。 jdk7提供了7個阻塞隊列,分別是:

ArrayBlockingQueue:一個由數組結構組成的有界阻塞隊列 LinkedBlockingQueue:一個由鏈表結構組成的有界阻塞隊列 PriorityBlockingQueue:一個支持優先級排序的無界阻塞隊列 DelayQueue:一個使用優先級隊列實現的無界阻塞隊列 SynchronousQueue:一個不存儲元素的阻塞隊列 LinkedTransferQueue:一個由鏈表結構組成的無界阻塞隊列 LinkedBlockingDueue:一個 由鏈表結構組成的雙向阻塞隊列

線程池工作原理圖解:

web開發中使用無界隊列的線程池會不會導致內存飆升

到此,關于“web開發中使用無界隊列的線程池會不會導致內存飆升”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潮州市| 三原县| 随州市| 潢川县| 眉山市| 孟津县| 通许县| 东乌| 阳春市| 贵州省| 苍南县| 大石桥市| 理塘县| 奉化市| 金乡县| 克山县| 东兰县| 长白| 任丘市| 无为县| 武鸣县| 沙坪坝区| 怀来县| 大名县| 禄劝| 灵丘县| 绍兴市| 绥滨县| 门头沟区| 涡阳县| 湖南省| 新民市| 饶河县| 会理县| 光山县| 霸州市| 江门市| 环江| 淄博市| 冀州市| 秭归县|