日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java多線程導致CPU占用100%解決及線程池正確關閉方式

瀏覽:33日期:2022-08-11 16:50:04
簡介

情景:1000萬表數據導入內存數據庫,按分頁大小10000查詢,多線程,15條線程跑。使用了ExecutorService executor = Executors.newFixedThreadPool(15)本地跑了一段時間后,發現電腦CPU逐漸升高,最后CPU占用100%卡死,內存使用也高達80%。

排查問題

Debug 發現雖然創建了定長15的線程池,但是因為數據量大,在For中循環分頁查詢的List會持續加入LinkedBlockingQueue()隊列中每一個等待的任務,又加載了1萬的數據。所以不管是線程數的CPU搶占,還是內存的消耗都是極高。所以是不是能夠控制等待隊列LinkedBlockingQueue的上限就可以了。

Java多線程導致CPU占用100%解決及線程池正確關閉方式

解決辦法

使用AtomicLong 統計線程是否完成,再執行executor.submit()提交新的任務導隊列中。偽代碼如下:

private AtomicLong threadNum = new AtomicLong(0);public void init() throws Exception {ExecutorService executor = Executors.newFixedThreadPool(15);Integer total = accountMapper.selectCount(new QueryWrapper<>());Integer pageSize = 10000; // 頁大小Integer pageCount = (total + pageSize -1) / pageSize; // 總頁數for (Integer start = 1; start <= pageCount; start++) {List<Account> list = accountMapper.selectPage(new Page<>(start, pageSize), query).getRecords();//等待線程任務完成,設置30,可令運行線程數為15,等待隊列線程數為15while (threadNum.get() >= 30){Thread.sleep(5000);}//開啟1個線程+1threadNum.incrementAndGet();executor.submit(() -> {try {// 處理業務dealMessage(list);// 任務完成 -1threadNum.decrementAndGet();} catch (Exception e) {e.printStackTrace();}});}executor.shutdown();executor.awaitTermination(1, TimeUnit.DAYS);}

效果就是CPU保持在15~45%之間,內存占用也只有45%。

目前只想到這樣的方式,控制等待隊列LinkedBlockingQueue的上限,還有更好的方式請告知,感謝!

2021-02-03-分割線最近又用到了多線程開發,發現了還是有很多方式控制的。簡單的使用java的Semaphore令牌限流控制也能實現。

多線程: 線程池必須關閉,main主線程才能結束(接口才會返回)finally { executorService.shutdown(); } 主線程等待保證多線程所有子線程任務執行完畢,再結束。 -> executorService.awaitTermination(1, TimeUnit.DAYS); semaphore 令牌限流控制fixedThread線程池,本例子就是最多同時擁有2個線程進行工作 fixedThread.execute() fixedThread.submit() 的差別除了后者可以返回結果外,后者還會catch掉異常信息,無法拋到主線程中。

public static void main(String[] args) { final List<String> tableNames = new ArrayList<>(); tableNames.add('a'); tableNames.add('b'); tableNames.add('c'); tableNames.add('d'); tableNames.add('e'); tableNames.add('f'); final Semaphore semaphore = new Semaphore(2); final ExecutorService fixedThread = Executors.newCachedThreadPool(); for (final String tableName : tableNames) {//阻塞,獲取令牌try { semaphore.acquire();} catch (InterruptedException e) { e.printStackTrace();}//dofixedThread.execute(() -> { //can throw ex log final ExecutorService executorService = Executors.newCachedThreadPool(); try {executorService.submit(() -> { //can’t throw ex log //int i = 1/0; System.out.println('tableName2:' + tableName);});//int i = 1/0;System.out.println('tableName:' + tableName); } catch (Exception e) {e.printStackTrace(); } finally {executorService.shutdown();try { executorService.awaitTermination(1, TimeUnit.DAYS);} catch (InterruptedException e) { e.printStackTrace();}semaphore.release();System.out.println('semaphore.release'); }}); } // 記得關閉線程池 fixedThread.shutdown(); try {fixedThread.awaitTermination(1, TimeUnit.DAYS); } catch (InterruptedException e) {e.printStackTrace(); } System.out.println('主線程...');}

打印結果

tableName:btableName2:btableName:atableName2:asemaphore.releasesemaphore.releasetableName:dtableName2:dtableName:csemaphore.releasetableName:etableName2:csemaphore.releasetableName:ftableName2:esemaphore.releasetableName2:fsemaphore.release主線程...

到此這篇關于Java多線程導致CPU占用100%解決及線程池正確關閉方式的文章就介紹到這了,更多相關Java多線程CPU占用100%內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品大片| 天堂av在线一区| 成人一区不卡| 国产综合色产| 中文字幕日韩高清在线| 国产精品一级在线观看| 亚洲精品**中文毛片| 夜夜嗨av一区二区三区网站四季av| 国内激情久久| 欧美日韩18| 一本大道色婷婷在线| 蜜桃视频第一区免费观看| 国产精品成人国产| 久久九九电影| 日韩精品第二页| 成人美女视频| 综合精品一区| 国产一区一一区高清不卡| 欧美日韩国产在线一区| 国产日韩欧美中文在线| 少妇精品导航| 亚洲精品第一| 香蕉成人av| 日韩一区精品字幕| 国产成人久久精品一区二区三区| 亚洲欧洲一区| 国产成人精品一区二区三区视频 | 韩日一区二区三区| 91麻豆精品| 欧美精品激情| 成人台湾亚洲精品一区二区| 亚洲午夜免费| 91视频一区| 免费一区二区三区在线视频| 日韩电影免费网址| 天堂成人免费av电影一区 | 久久午夜影视| 国产精品麻豆成人av电影艾秋 | 国产午夜精品一区二区三区欧美 | 国产精品伦理久久久久久| 国产毛片一区| 日韩欧美中文字幕一区二区三区| 久久精品国产久精国产爱| 99tv成人| 国产亚洲一卡2卡3卡4卡新区| 日本在线高清| 日韩在线黄色| 日本精品影院| 在线人成日本视频| 伊人成人在线视频| 日韩国产欧美一区二区| 国产调教一区二区三区| 男女男精品网站| 国产一二在线播放| 免费在线亚洲| 日韩黄色av| 蜜臀精品久久久久久蜜臀| 亚洲日本网址| 国产一区二区三区四区| 欧美日韩一区二区三区不卡视频| 鲁大师影院一区二区三区| 久久久成人网| 国产suv精品一区二区四区视频| 日韩毛片网站| 视频一区二区国产| 婷婷综合网站| 欧美日韩在线网站| 日韩国产一区| 精品资源在线| 国产精成人品2018| 日韩高清三区| 久久亚洲国产精品一区二区| 欧美1级日本1级| 桃色一区二区| 国产精品蜜芽在线观看| 国产精品.xx视频.xxtv| 国产亚洲一区| 国产亚洲久久| 国产日韩一区二区三免费高清 | 日韩一区二区三免费高清在线观看 | 欧美一级久久| 亚洲三级精品| 视频一区中文字幕国产| 精品91久久久久| 欧美成人亚洲| 欧美国产一级| 国产激情在线播放| 麻豆网站免费在线观看| 国产精品成久久久久| 福利一区视频| 国产夫妻在线| 91看片一区| 欧美肉体xxxx裸体137大胆| 91精品亚洲| 一区在线免费| 爽爽淫人综合网网站| 日韩在线卡一卡二| 中文字幕亚洲影视| 中文字幕av一区二区三区四区| 日本欧洲一区二区| 日韩中文欧美在线| 日本一不卡视频| 日韩av一二三| 国产三级精品三级在线观看国产| 日韩高清在线不卡| 国产乱码精品一区二区亚洲| 欧美日韩亚洲一区三区| 久久成人福利| 高清不卡亚洲| 91精品电影| 三级一区在线视频先锋| 天堂av一区| 国产乱码精品一区二区三区亚洲人| 国产精品成人自拍| 久久久久久一区二区| 国产一区二区三区成人欧美日韩在线观看 | 在线日韩一区| 亚洲欧美日韩国产综合精品二区 | 91欧美国产| 欧美aa国产视频| 丝袜亚洲另类欧美| 国产精品一区二区av日韩在线| 国产精品久久久久久久久久久久久久久| 久久免费视频66| 久久一区二区中文字幕| 男女性色大片免费观看一区二区| 日本一区二区三区视频在线看| 国产精品亲子伦av一区二区三区 | 久热精品在线| 欧美亚洲色图校园春色| 精品国产亚洲一区二区在线观看| 中文字幕色婷婷在线视频| 久久在线视频免费观看| 日本欧美在线看| 国产精品密蕾丝视频下载| 久久一区国产| 欧美日韩中文一区二区| 亚洲欧洲av| 国产一区二区亚洲| 激情婷婷综合| 欧美在线日韩| 日韩国产综合| 综合在线一区| 91亚洲一区| 蜜臀91精品一区二区三区| 麻豆精品国产91久久久久久| 久久国产主播| 亚洲精品日本| 亚洲精品成人图区| 日韩一区网站| 精品国产第一福利网站| 日韩在线一二三区| 高清一区二区| 蜜桃视频第一区免费观看| 精品国产亚洲日本| 亚洲欧美不卡| 国产一区二区久久久久| 免费在线视频一区| 97在线精品| 婷婷五月色综合香五月| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 久久av在线| 福利一区二区三区视频在线观看| 午夜亚洲一区| 久久亚洲精精品中文字幕| 午夜一级久久| av最新在线| 日韩精品三级| 国产在线成人| 麻豆精品视频在线观看免费| 中文精品在线| 98精品久久久久久久| 日日夜夜免费精品视频| 欧美日韩中文一区二区| 久久av偷拍| 亚洲日本三级| 亚洲国产专区校园欧美| 国产精品一区二区av日韩在线| 99香蕉国产精品偷在线观看| 国产乱码精品一区二区三区四区 | 国产日韩欧美在线播放不卡| 亚洲欧美综合| 中文在线а√天堂| 国产精品一区亚洲| 免费在线成人网| 亚洲性视频h| 成人精品国产亚洲| 国产欧美日韩视频在线| 久久大逼视频| 黑人精品一区| 国产精品亚洲综合色区韩国 | 日本少妇精品亚洲第一区| 99国内精品| 亚洲手机视频| 国产一区二区精品福利地址| 欧美日韩中文| 日韩激情一二三区| 蜜桃视频第一区免费观看| 欧美日韩免费观看一区=区三区| 高清在线一区|