多執行緒執行 sql查詢 提公升整體查詢效率

2021-09-02 04:25:42 字數 780 閱讀 4947

對於複雜的業務sql查詢,可以考慮如下建議。

1.先通過sql查詢出主表資訊列表list.

2.for迴圈list,補充查詢主表對應的子表資訊。

3.在2的步驟中,可以使用多執行緒處理for查詢。

其中conlist 是查詢主表返回的list

//執行緒池初始化

threadpoolexecutor executor = threadpool.getthreadpool(5,8, 3000, timeunit.seconds, new linkedblockingqueue(2000));

//得到執行緒池中線程佇列

linkedblockingqueuequeue = (linkedblockingqueue) executor.getqueue();

int counttool= conlist.size();

final countdownlatch countdownlatch = new countdownlatch(counttool);

for(int i=0;i < counttool;i++) catch (sqlexception e)

//執行緒計數器 減 1

countdownlatch.countdown();

}});

}//所有子執行緒 執行完成之後 主線程再繼續向下

countdownlatch.await();

system.out.println("-------------query end------");

?

多執行緒執行sql報錯處理

原文 參考 原因 使用了多執行緒,多執行緒共享了同乙個資料庫連線,但每個execute前沒有加上互斥鎖 方法 方法一 每個execute前加上互斥鎖 lock.acquire cursor.execute command,data lock.release 方法二 方法三 所有執行緒共用乙個連線池,...

多執行緒交替執行

場景 由於業務需要多執行緒併發操作,並且多執行緒之間是有一定的依賴關係,比如a執行緒儲存資料,b執行緒則解析資料,即b執行緒是需要在a 執行緒執行完之後才開始執行,同樣a執行緒儲存資料的也需要b執行緒對資料解析完成後才開始儲存新的資料,因此a與b兩個執行緒就形成了交替實現,當然具體情況比這個複雜一些...

多執行緒交替執行

場景 由於業務需要多執行緒併發操作,並且多執行緒之間是有一定的依賴關係,比如a執行緒儲存資料,b執行緒則解析資料,即b執行緒是需要在a 執行緒執行完之後才開始執行,同樣a執行緒儲存資料的也需要b執行緒對資料解析完成後才開始儲存新的資料,因此a與b兩個執行緒就形成了交替實現,當然具體情況比這個複雜一些...