日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

【踩坑指南】線程池使用不當的五個坑

來源: 責編: 時間:2024-02-04 09:00:55 270觀看
導讀線程池是 Java 多線程編程中的一個重要概念,它可以有效地管理和復用線程資源,提高系統的性能和穩定性。但是線程池的使用也有一些注意事項和常見的錯誤,如果不小心,就可能會導致一些嚴重的問題,比如內存泄漏、死鎖、性能下

線程池是 Java 多線程編程中的一個重要概念,它可以有效地管理和復用線程資源,提高系統的性能和穩定性。但是線程池的使用也有一些注意事項和常見的錯誤,如果不小心,就可能會導致一些嚴重的問題,比如內存泄漏、死鎖、性能下降等。最后文末還有免費紅包封面可以領取,回饋給各位讀者朋友。q0f28資訊網——每日最新資訊28at.com

本文將介紹線程池使用不當的五個坑,以及如何避免和解決它們,大綱如下,q0f28資訊網——每日最新資訊28at.com

圖片q0f28資訊網——每日最新資訊28at.com

坑一:線程池中異常消失

線程池執行方法時要添加異常處理,這是一個老生常談的問題,可是直到最近我都有同事還在犯這個錯誤,所以我還是要講一下,不過我還提到了一種優雅的線程池全局異常處理的方法,大家可以往下看。q0f28資訊網——每日最新資訊28at.com

問題原因

@Testpublic void test() throws Exception {    ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(        5,         10,         60,        TimeUnit.SECONDS,         new ArrayBlockingQueue<>(100000));    Future<Integer> submit = threadPoolExecutor.execute(() -> {        int i = 1 / 0; // 發生異常        return i;    });}

如上代碼,在線程池執行任務時,沒有添加異常處理。導致任務內部發生異常時,內部錯誤無法被記錄下來。q0f28資訊網——每日最新資訊28at.com

解決方法

在線程池執行任務方法內添加 try/catch 處理,代碼如下,q0f28資訊網——每日最新資訊28at.com

@Testpublic void test() throws Exception {    ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(        5,         10,         60,        TimeUnit.SECONDS,         new ArrayBlockingQueue<>(100000));    Future<Integer> submit = threadPoolExecutor.execute(() -> {        try {            int i = 1 / 0;            return i;        } catch (Exception e) {            log.error(e.getMessage(), e);            return null;        }    });}

優雅的進行線程池異常處理

當線程池調用任務方法很多時,那么每個線程池任務執行的方法內都要添加 try/catch 處理,這就不優雅了,其實 ThreadPoolExecutor 線程池類支持傳入 ThreadFactory 參數用于自定義線程工廠,這樣我們在創建線程時,就可以指定 setUncaughtExceptionHandler 異常處理方法。q0f28資訊網——每日最新資訊28at.com

這樣就可以做到全局處理異常了,代碼如下,q0f28資訊網——每日最新資訊28at.com

ThreadFactory threadFactory = r -> {    Thread thread = new Thread(r);    thread.setUncaughtExceptionHandler((t, e) -> {        // 記錄線程異常        log.error(e.getMessage(), e);    });    return thread;};ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(    5,     10,     60,    TimeUnit.SECONDS,     new ArrayBlockingQueue<>(100000));threadPoolExecutor.execute(() -> {    log.info("---------------------");    int i = 1 / 0;});

不過要注意的是上面 setUncaughtExceptionHandler 方法只能針對線程池的 execute 方法來全局處理異常。對于線程池的 submit 方法是無法處理的。q0f28資訊網——每日最新資訊28at.com

坑二:拒絕策略設置錯誤導致接口超時

在 Java 中,線程池拒絕策略可以說一個常見八股文問題。大家雖然都記住了線程池有四種決絕策略,可是實際代碼編寫中,我發現大多數人都只會用 CallerRunsPolicy 策略(由調用線程處理任務)。我吃過這個虧,因此也拿出來講講。q0f28資訊網——每日最新資訊28at.com

問題原因

曾經有一個線上業務接口使用了線程池進行第三方接口調用,線程池配置里的拒絕策略采用的是 CallerRunsPolicy。示例代碼如下,q0f28資訊網——每日最新資訊28at.com

// 某個線上線程池配置如下ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(        50, // 最小核心線程數        50, // 最大線程數,當隊列滿時,能創建的最大線程數        60L, TimeUnit.SECONDS, // 空閑線程超過核心線程時,回收該線程的最大等待時間        new LinkedBlockingQueue<>(5000), // 阻塞隊列大小,當核心線程使用滿時,新的線程會放進隊列        new CustomizableThreadFactory("task"), // 自定義線程名        new ThreadPoolExecutor.CallerRunsPolicy() // 線程執行的拒絕策略);threadPoolExecutor.execute(() -> {    // 調用第三方接口    ...});

在第三方接口異常的情況下,線程池任務調用第三方接口一直超時,導致核心線程數、最大線程數堆積被占滿、阻塞隊列也被占滿的情況下,也就會執行拒絕策略,但是由于使用的是 CallerRunsPolicy 策略,導致線程任務直接由我們的業務線程來執行。q0f28資訊網——每日最新資訊28at.com

因為第三方接口異常,所以業務線程執行也會繼繼續超時,線上服務采用的 Tomcat 容器,最終也就導致 Tomcat 的最大線程數也被占滿,進而無法繼續向外提供服務。q0f28資訊網——每日最新資訊28at.com

解決方法

首先我們要考慮業務接口的可用性,就算線程池任務被丟棄,也不應該影響業務接口。q0f28資訊網——每日最新資訊28at.com

在業務接口穩定性得到保證的情況下,在考慮到線程池任務的重要性,不是很重要的話,可以使用 DiscardPolicy 策略直接丟棄,要是很重要,可以考慮使用消息隊列來替換線程池。q0f28資訊網——每日最新資訊28at.com

坑三:重復創建線程池導致內存溢出

不知道大家有沒有犯過這個問題,不過我確實犯過,歸根結底還是寫代碼前,沒有思考好業務邏輯,直接動手,寫一步算一步

本文鏈接:http://m.www897cc.com/showinfo-26-72429-0.html【踩坑指南】線程池使用不當的五個坑

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 深入了解Java 8 新特性-日期時間API之LocalDateTime類

下一篇: 什么是數據同步利器DataX,如何使用?

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • Redmi Buds 4開箱簡評:才199還有降噪 可以無腦入

    在上個月舉辦的Redmi Note11T Pro系列新機發布會上,除了兩款手機新品之外,Redmi還帶來了兩款TWS真無線藍牙耳機產品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們在Redmi Note11T
  • 7月安卓手機性價比榜:努比亞+紅魔兩款新機入榜

    7月登場的新機有努比亞Z50S Pro和紅魔8S Pro,除了三星之外目前唯二的兩款搭載超頻版驍龍8Gen2處理器的產品,而且努比亞和紅魔也一貫有著不錯的性價比,所以在本次的性價比榜單
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點商業作者:楊銘在淘寶購買珠寶玉石后,因為保證金不夠賠付,店鋪關閉,退貨退款難、維權無門的比比皆是。&ldquo;提供相關產品鑒定證書,支持全國復檢,可以30天無理由退換貨。&
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創 作者|程心 羅輯2023年之前,對于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新業務到 2022 年底還是 0,希望 2023 年出來一個 1。&rdquo;這是2022年底,李彥宏
  • iQOO 11S屏幕細節公布:首發三星2K E6全感屏 安卓最好的直屏手機

    日前iQOO手機官方宣布,新一代電競旗艦iQOO 11S將會在7月4日19:00正式與大家見面。隨著發布時間的日益臨近,官方關于該機的預熱也更加密集,截至目前已
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日韩情趣电影| 亚洲一区二区视频在线| 国产一区二区久久| 黄色影院成人| 最新成人av在线| 正在播放日韩| 久久成人人人人精品欧| 蜜乳av另类精品一区二区| 欧美精品www| 国产精品影视天天线| 在线观看视频一区二区| 一区二区三区高清在线观看| 亚洲欧美电影在线观看| 久久国产视频网| 欧美激情在线有限公司| 国产精品亚洲综合| 亚洲国产日韩精品| 在线一区欧美| 久久一本综合频道| 亚洲国产精品黑人久久久| 在线视频亚洲一区| 久久久久国产免费免费| 欧美日韩国产三级| 国内精品视频一区| 亚洲视频高清| 免费视频一区二区三区在线观看| 国产精品成人播放| 最新亚洲视频| 久久久精品网| 国产精品卡一卡二| 亚洲激情在线视频| 欧美一区二区免费视频| 欧美另类亚洲| 黑人极品videos精品欧美裸| 一区二区三区www| 免费亚洲视频| 国产一区二区你懂的| 在线视频一区观看| 欧美国产激情二区三区| 国产午夜一区二区三区| 一区二区精品| 欧美成人国产| 狠狠干综合网| 亚洲欧美日韩国产另类专区| 欧美精品日本| 亚洲国产另类精品专区| 久久爱www.| 国产精品女主播| 99人久久精品视频最新地址| 久久精品中文字幕一区| 国产精品大片免费观看| 亚洲品质自拍| 久久在线精品| 国内自拍一区| 欧美一区激情| 国产精品视区| 亚洲在线观看免费视频| 欧美日韩午夜精品| 亚洲精品乱码久久久久久日本蜜臀| 久久精品国语| 国产日韩在线播放| 午夜视频在线观看一区二区三区| 欧美视频日韩| 一区电影在线观看| 欧美伦理91| 亚洲激情视频在线| 免费观看成人网| 在线成人国产| 另类综合日韩欧美亚洲| 精久久久久久| 久久久伊人欧美| 狠狠噜噜久久| 久久久久五月天| 狠狠色狠狠色综合| 久久久久网站| 伊人狠狠色j香婷婷综合| 久久国产一区二区| 国产欧美一区二区三区久久人妖| 亚洲欧美激情精品一区二区| 国产精品久久9| 亚洲一区三区在线观看| 欧美性生交xxxxx久久久| 一区二区免费在线视频| 欧美三级网址| 亚洲午夜免费福利视频| 欧美午夜精品理论片a级按摩 | 欧美二区在线播放| 亚洲国产成人精品视频| 嫩草影视亚洲| 亚洲精品永久免费| 欧美日韩免费在线观看| 亚洲视频日本| 国产精品自拍网站| 久久精品在线播放| 亚洲国产cao| 99re6这里只有精品视频在线观看| 久久青草久久| 亚洲国产日韩欧美| 欧美精品一区二区三区很污很色的 | 亚洲午夜影视影院在线观看| 国产精品成人免费| 欧美一区1区三区3区公司| 国产亚洲午夜高清国产拍精品| 久久久国产视频91| 在线观看一区视频| 欧美激情中文字幕一区二区| 夜夜嗨一区二区| 国产日韩一区| 欧美/亚洲一区| 一区二区三区高清不卡| 国产欧美短视频| 久久一二三四| 夜夜爽夜夜爽精品视频| 国产精品美女一区二区| 久久精品99国产精品| 亚洲高清激情| 欧美三区在线视频| 欧美一区二区视频免费观看| 亚洲第一精品夜夜躁人人躁 | 国产美女精品视频免费观看| 久久天天躁狠狠躁夜夜av| 日韩视频一区二区三区在线播放免费观看 | 久久午夜电影网| 亚洲精品中文字幕在线| 国产精品久久久免费| 久久久精彩视频| 日韩图片一区| 国产欧美亚洲视频| 男人插女人欧美| 亚洲制服丝袜在线| 精品va天堂亚洲国产| 欧美日韩一区三区四区| 久久精品亚洲乱码伦伦中文| 亚洲人成在线播放网站岛国| 国产精品美女主播在线观看纯欲| 久久综合九色九九| 亚洲一区二区三区在线看| 极品中文字幕一区| 欧美性大战久久久久久久蜜臀| 久久九九国产精品| 一区二区福利| 尤物九九久久国产精品的特点| 欧美日韩一区二区免费在线观看| 久久国产精品99国产| 99riav国产精品| 国产在线精品成人一区二区三区| 欧美日产在线观看| 久久野战av| 欧美一区二区三区久久精品茉莉花| 亚洲人在线视频| 国产主播精品| 国产精品国产亚洲精品看不卡15 | 欧美亚洲三级| 日韩天堂在线观看| 尤物精品国产第一福利三区 | 一本色道久久加勒比88综合| 国内外成人免费激情在线视频| 欧美日韩在线直播| 狂野欧美激情性xxxx| 午夜激情综合网| 日韩一级免费观看| 在线色欧美三级视频| 国产欧美日本| 国产精品爱久久久久久久| 欧美成人视屏| 久久漫画官网| 久久av一区二区三区亚洲| 国产精品porn| 免费在线一区二区| 久久久久久9999| 欧美一区二区三区另类| 亚洲天堂av图片| 日韩视频在线一区| 亚洲成色999久久网站| 国产偷自视频区视频一区二区| 欧美视频四区| 欧美日韩免费高清| 欧美精品粉嫩高潮一区二区 | 国产精品乱人伦一区二区 | 欧美福利视频在线| 久久综合网色—综合色88| 久久av一区二区三区| 亚洲综合三区| 一区二区91| 99精品视频一区| 亚洲精选视频在线| 亚洲精选在线观看| 亚洲精品一区二区三区99| 亚洲国产片色| 亚洲日本成人女熟在线观看| 影音先锋一区| 亚洲电影有码| 亚洲大胆女人| 在线看视频不卡| 亚洲丶国产丶欧美一区二区三区| 激情综合激情| 有坂深雪在线一区| 亚洲第一毛片| 亚洲黄色影院| 91久久午夜| 亚洲肉体裸体xxxx137| 亚洲精品四区| 99精品国产在热久久婷婷| 一本一本久久a久久精品牛牛影视|