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

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

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

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

問(wèn)題描述

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

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

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

比如 : SQLNonTransientConnectionException

請(qǐng)問(wèn)該如何解決上述異常,或者有什么好的多線程分頁(yè)查詢處理方案?

原來(lái)問(wèn)題描述不太清楚,現(xiàn)在添加以下代碼(手敲,如果有錯(cuò),請(qǐng)多包含)

分頁(yè)式查詢邏輯:

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('分頁(yè)式多線程處理數(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 ..... }}

問(wèn)題解答

回答1:

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

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

ExecutorService exe = newFixedThreadPool(Runtime.getRuntime().availableProcessors());CountDownLatch latch = new CountDownLatch(?); //?代表開(kāi)啟全部線程的數(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('分頁(yè)式多線程處理數(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:

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 国产91一区二这在线播放 | 国产成人资源 | 成人网18免费网站在线 | 日本三级视频在线 | 亚洲人成综合网站在线 | 亚洲男同视频网站 | 欧美巨大精品欧美一区二区 | 亚洲 欧美 日韩在线 | 亚洲99在线的 | 久久精品23| 99爱视频免费高清在线观看 | 免费aa在线观看 男人的天堂 | 国内精品久久久久久久久蜜桃 | 日本特黄特色视频 | 一本久久a久久精品亚洲 | 成人合成mv福利视频网站 | 私人毛片免费高清影视院丶 | 三级韩国一区久久二区综合 | 女人精aaaa片一级毛片女女 | 国产女人在线视频 | 日韩免费三级 | 亚洲精品自拍 | 九九视频免费在线观看 | 午夜限制r级噜噜片一区二区 | 久久精品视频一区 | 性欧美精品久久久久久久 | 午夜怡红院| 欧美高清在线视频一区二区 | 亚洲视频中文 | 精品免费国产一区二区三区 | 午夜国产精品不卡在线观看 | 国产高清视频免费 | 亚洲视频中文字幕 | 国产午夜精品久久久久九九 | 男人在线天堂 | a中文字幕1区 | 久久精品99精品免费观看 | 美女福利视频午夜在线 | 国产手机国产手机在线 | 欧美一区二区在线观看视频 | 日本高清一本二本三本如色坊 |