国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

java - 分頁查詢中如何使用多線程加快處理速度?

瀏覽:121日期:2024-01-04 09:04:18

問題描述

一個歷史表中有大量的數據,現在要通過分頁式查詢處理轉換數據。

現在將處理數據的邏輯放在線程池中處理,以加快處理流程。

可是總是出現事務方面的異常

比如 : SQLNonTransientConnectionException

請問該如何解決上述異常,或者有什么好的多線程分頁查詢處理方案?

原來問題描述不太清楚,現在添加以下代碼(手敲,如果有錯,請多包含)

分頁式查詢邏輯:

int pageSize = 100;int currentPageLength = 0;int pageIndex = 0;ExecutorService exe = newFixedThreadPool(Runtime.getRuntime().availableProcessors());do { int offset = pageIndex * pageSize; List<TradeInfo> tradeInfos = tradeInfoService.findTradeInfoBysPage(queryParams,offset,pageSize); if (null != tradeInfos && tradeInfos.size() > 0) {currentPageLength = tradeInfos.size();TradeInfoProcesserTask task = new TradeInfoProcesserTask(tradeInfos );exe.execute(task);pageIndex++; }else{System.out.println('Page Query TradeInfo Got NOTHING! Break query loop!');break; }} while (currentPageLength == pageSize);exe.shutdown();while(true) { if(exe.isTerminated()){doOtherThings();System.out.println('分頁式多線程處理數據完畢!');break; }}

數據處理邏輯:

public class TradeInfoProcesserTask implements Runnable{ private volatile List<TradeInfo> tradeInfos;public TradeInfoProcesserTask (List<TradeInfo> _tradeInfos){tradeInfos = _tradeInfos; }@Override public void run() {processTradeInfos(); }private void processTradeInfos(){//do something with tradeInfos ..... }}

問題解答

回答1:

邏輯先不說。現在沒有判斷多線程是否全部執行完,while循環完就shutdown。。。將CountDownLatch通過構造器傳入線程

java - 分頁查詢中如何使用多線程加快處理速度?

ExecutorService exe = newFixedThreadPool(Runtime.getRuntime().availableProcessors());CountDownLatch latch = new CountDownLatch(?); //?代表開啟全部線程的數量do { int offset = pageIndex * pageSize; List<TradeInfo> tradeInfos = tradeInfoService.findTradeInfoBysPage(queryParams,offset,pageSize); if (null != tradeInfos && tradeInfos.size() > 0) {currentPageLength = tradeInfos.size();TradeInfoProcesserTask task = new TradeInfoProcesserTask(tradeInfos, latch);exe.execute(task);pageIndex++; }else{System.out.println('Page Query TradeInfo Got NOTHING! Break query loop!');break; }} while (currentPageLength == pageSize);latch.await(); //多線程全部執行完exe.shutdown();doOtherThings();System.out.println('分頁式多線程處理數據完畢!');

public class TradeInfoProcesserTask implements Runnable{ private volatile List<TradeInfo> tradeInfos; private CountDownLatch latch;public TradeInfoProcesserTask (List<TradeInfo> _tradeInfos, CountDownLatch latch){tradeInfos = _tradeInfos;this.latch = latch; }@Override public void run() {processTradeInfos();latch.countDown(); }private void processTradeInfos(){//do something with tradeInfos ..... }}回答2:

分頁查詢是不并發(DAO)的,數據處理是并發(Service),所以你的事務級級別是設置在哪個環節呢?

標簽: java
相關文章:
主站蜘蛛池模板: 欧美激情视频一级视频一级毛片 | 日本欧美一区二区三区在线 | 美女张开腿让男人桶的动态图 | 亚洲欧美日韩在线线精品 | 国产精品视频第一区二区三区 | 国产做a爰片久久毛片 | 13一14周岁毛片免费 | 美女扒开腿让男人桶 | 性xxx69xxx视频在线观看 | 欧美成人午夜做爰视频在线观看 | 99久久精品国产片久人 | 久久久久在线观看 | 日韩制服诱惑 | 美女和男人免费网站视频 | 国内成人精品视频 | 欧美一区二区三区激情视频 | 中国一级毛片免费观看 | 亚洲欧美国产一区二区三区 | 免费福利入口在线观看 | 一个人看的www日本高清视频 | 国产美女在线一区二区三区 | 国产精品一区亚洲一区天堂 | 国产三级久久久精品三级 | 成人性欧美丨区二区三区 | 亚洲在线成人 | 亚洲视频在线观看视频 | 九九久久精品视频 | 日本一区二区不卡久久入口 | 欧美精品在线视频 | 欧美真人毛片动作视频 | 久久亚洲精品中文字幕亚瑟 | 亚洲日本韩国在线 | 毛片直接看 | 乱淫网站 | 国产乱码一区二区三区四 | www欧美com| 免费一级a毛片 | 欧美一级高清片欧美国产欧美 | 亚洲成人高清在线观看 | 亚洲国产老鸭窝一区二区三区 | 亚洲免费三级 |