最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解java如何處理各種批量數(shù)據(jù)入庫

 更新時(shí)間:2023年11月16日 15:58:48   作者:胡蘿卜★  
這篇文章主要為大家詳細(xì)介紹了java如何使用BlockingQueue處理各種批量數(shù)據(jù)入庫,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

這里我推薦大家使用BlockingQueue,該隊(duì)列為阻塞隊(duì)列

將數(shù)據(jù)先寫入隊(duì)列中,然后開啟多個(gè)消費(fèi)線程慢慢消費(fèi)入庫。從隊(duì)列中消費(fèi)數(shù)據(jù)有兩種方式:

  • 單條消費(fèi)
  • 批量消費(fèi)

一、案例:人臉識(shí)別設(shè)備—開門記錄(批量消費(fèi))

1.創(chuàng)建隊(duì)列

@Component
public class RequestQueue<T> {
   
	/**
	* 獲取開門記錄隊(duì)列
	*/
    BlockingQueue<JSONObject> blockingQueue = new ArrayBlockingQueue<>(1000000,true);
    
     
    /**
     * 獲取請(qǐng)求隊(duì)列數(shù)據(jù)
     */
    public BlockingQueue<JSONObject> getBlockingQueue(){
        return blockingQueue;
    }
   
    
    
    /**
     * 保存數(shù)據(jù)進(jìn)入隊(duì)列
     */
    public void putJsonDataQueue(JSONObject jsonObject){
        try {
            getBlockingQueue().put(jsonObject);

        }catch (Exception e){
            e.printStackTrace();
        }

    }
    
}

2.創(chuàng)建消費(fèi)隊(duì)列任務(wù)

@Component
public class DoorOpeningRecordTask extends Thread{
    @Autowired
    private RequestQueue requestQueue;

    @Autowired
    private DoorOpeningRecordService doorOpeningRecordService;

    @Override
    public void run(){
        while(true){
            try {
                //取出信息列表
                List<JSONObject> list = new ArrayList<>();
                //參數(shù)列表: 獲取隊(duì)列  數(shù)據(jù)  批量處理一百條  500毫秒
                Queues.drain(requestQueue.getBlockingQueue(), list, 100, 500, TimeUnit.MILLISECONDS);
                //對(duì)數(shù)據(jù)進(jìn)行保存
                doorOpeningRecordService.save(list);

            }catch (Exception e){
                e.printStackTrace();
            }

        }

    }


}

3.監(jiān)聽隊(duì)列信息

@Component
public class QueueListener {
    
    @Autowired
    private DoorOpeningRecordTask doorOpeningRecordTask;

    /**
     * 初始化時(shí)啟動(dòng)監(jiān)聽請(qǐng)求隊(duì)列
     */
    @PostConstruct
    public void init() {
        doorOpeningRecordTask.start();
    }

    /**
     * 銷毀容器時(shí)停止監(jiān)聽任務(wù)
     */
    @PreDestroy
    public void destory() {
       
        doorOpeningRecordTask.interrupt();
    }

}

到此這篇關(guān)于詳解java如何處理各種批量數(shù)據(jù)入庫的文章就介紹到這了,更多相關(guān)java處理數(shù)據(jù)入庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

安义县| 大方县| 梅州市| 枣阳市| 永吉县| 崇义县| 墨竹工卡县| 晋中市| 凉城县| 吴桥县| 玉龙| 黔南| 新疆| 育儿| 阳曲县| 河北省| 玉屏| 连云港市| 田东县| 佛山市| 余江县| 铅山县| 林州市| 五河县| 抚州市| 永泰县| 许昌县| 汾西县| 龙陵县| 金阳县| 邳州市| 天水市| 镇坪县| 茂名市| 娄烦县| 湘乡市| 安国市| 南江县| 保德县| 襄樊市| 南宫市|