午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

問題描述

一個歷史表中有大量的數(shù)據(jù),現(xiàn)在要通過分頁式查詢處理轉(zhuǎn)換數(shù)據(jù)。

現(xiàn)在將處理數(shù)據(jù)的邏輯放在線程池中處理,以加快處理流程。

可是總是出現(xiàn)事務(wù)方面的異常

比如 : SQLNonTransientConnectionException

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

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

分頁式查詢邏輯:

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('分頁式多線程處理數(shù)據(jù)完畢!');break; }}

數(shù)據(jù)處理邏輯:

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:

邏輯先不說。現(xiàn)在沒有判斷多線程是否全部執(zhí)行完,while循環(huán)完就shutdown。。。將CountDownLatch通過構(gòu)造器傳入線程

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

ExecutorService exe = newFixedThreadPool(Runtime.getRuntime().availableProcessors());CountDownLatch latch = new CountDownLatch(?); //?代表開啟全部線程的數(shù)量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(); //多線程全部執(zhí)行完exe.shutdown();doOtherThings();System.out.println('分頁式多線程處理數(shù)據(jù)完畢!');

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:

分頁查詢是不并發(fā)(DAO)的,數(shù)據(jù)處理是并發(fā)(Service),所以你的事務(wù)級級別是設(shè)置在哪個環(huán)節(jié)呢?

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 日韩一区二区在线视频 | 欧美在线日韩 | 国产又黄又爽又色 | 久久视频免费在线观看 | www日本黄色 | 精品视频在线免费 | 亚洲黄色三级视频 | 91亚洲精品在线观看 | 伊人加勒比 | 四虎永久在线观看 | 国产午夜精品久久久久久久 | 91精品国产乱码久久 | 国产女人和拘做受视频免费 | 香蕉久久久久久 | 亚洲欧美视频在线 | 国产午夜一区 | 国产精品999999 | 亚洲欧美日韩第一页 | 在线啪 | 日韩三级av在线 | 午夜视频入口 | 亚洲精品中文在线 | 99久久久精品| 日韩成人区| 四色成人av永久网址 | 99久精品 | 美日韩在线观看 | 成年人的视频 | 欧美成人天堂 | 日韩av在线资源 | 射进来av影视网 | avtt香蕉久久| 视频一区 中文字幕 | 一级特黄色 | 热久久最新| jizz性欧美23 | 黄色2级片 | 亚洲国产成人在线视频 | 亚洲激情综合 | 久久影院av | 日本三日本三级少妇三级66 |