java使用多线程查询大批量数据
生活随笔
收集整理的這篇文章主要介紹了
java使用多线程查询大批量数据
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言
在某些時候,一旦單表數(shù)據(jù)量過大,查詢數(shù)據(jù)的時候就會變得異常卡頓,雖然在大多數(shù)情況下并不需要查詢所有的數(shù)據(jù),而是通過分頁或緩存的形式去減少或者避免這個問題,但是仍然存在需要這樣的場景,比如需要導(dǎo)出一大批數(shù)據(jù)到excel中,導(dǎo)出數(shù)據(jù)之前,首先得把數(shù)據(jù)查詢出來吧?這個查詢的過程,數(shù)據(jù)量一旦過大,單線程查詢數(shù)據(jù)將會成為瓶頸,下面嘗試使用多線程來嘗試查詢一張數(shù)據(jù)量較大的表
由于代碼邏輯不是很難,直接上代碼,關(guān)鍵的地方會有代碼注釋和說明,總體實現(xiàn)思路:
- 查詢表的數(shù)據(jù)總量
- 線程切分,根據(jù)本機CPU的核數(shù)配置合適數(shù)量的線程處理數(shù),根據(jù)數(shù)據(jù)總量為不同的線程分配不同的查詢數(shù)據(jù)量分段,即不同的線程查詢不同分段的數(shù)據(jù)
- 將各個查詢數(shù)據(jù)的線程提交至線程池,這里使用的線程是帶有返回結(jié)果的異步線程
1、測試控制器
@GetMapping("/getSysLogMulti")@ApiOperation(value = "多線程獲取日志數(shù)據(jù)", notes = "多線程獲取日志數(shù)據(jù)", produces = "application/json")public List getSysLogMulti() {return operLogService.getSysLogMulti();}2、業(yè)務(wù)實現(xiàn)類
@Autowiredprivate MultiThreadQueryUtil multiThr總結(jié)
以上是生活随笔為你收集整理的java使用多线程查询大批量数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【开关电源六】buck电路的输出纹波定量
- 下一篇: 接口自动化框架之python pytes