亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

甘南县| 册亨县| 大田县| 清徐县| 莆田市| 河南省| 宜州市| 大足县| 临湘市| 客服| 家居| 东兰县| 类乌齐县| 铜梁县| 蚌埠市| 芜湖县| 石屏县| 磐安县| 青神县| 环江| 奉贤区| 岳池县| 阿图什市| 乌拉特中旗| 毕节市| 五家渠市| 都安| 宣武区| 札达县| 廉江市| 工布江达县| 密云县| 个旧市| 开江县| 临海市| 衡水市| 贵南县| 永福县| 大洼县| 怀仁县| 浦北县|