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

SpringBoot Test 多線程報(bào)錯(cuò)的根本原因(dataSource already closed)

 更新時(shí)間:2022年06月18日 08:48:59   作者:、楽.  
在使用Springboot test進(jìn)行相關(guān)測(cè)試的時(shí)候,發(fā)現(xiàn)開(kāi)啟線程操作數(shù)據(jù)庫(kù)的時(shí)候異常,這篇文章主要介紹了SpringBoot Test 多線程報(bào)錯(cuò):dataSource already closed的根本原因及解決方法,需要的朋友可以參考下

背景

使用Springboot test進(jìn)行相關(guān)測(cè)試的時(shí)候,發(fā)現(xiàn)開(kāi)啟線程操作數(shù)據(jù)庫(kù)的時(shí)候異常。

排查方法

將線程移除,采用并行的方式,操作數(shù)據(jù)庫(kù)正常。

根本原因

  • SpringBoot Test 主線程退出,導(dǎo)致Spring 容器關(guān)閉。
  • Spring容器關(guān)閉,導(dǎo)致DruidDataSource 關(guān)閉
  • 此時(shí)用戶線程去訪問(wèn)已關(guān)閉的數(shù)據(jù)源,導(dǎo)致報(bào)錯(cuò)。

解決方法

提供一個(gè)全局的線程池,然后使用線程池開(kāi)啟線程操作,然后添加監(jiān)聽(tīng)器,監(jiān)聽(tīng)線程池里面是否有未完成的任務(wù),如果有則不關(guān)閉容器。

@Component
public class EventListener implements ApplicationListener<ApplicationEvent> {

    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        if (event instanceof ContextClosedEvent) {
            LoggerClient.info("容器即將關(guān)閉");
            //線程池工具類
            ThreadPoolUtil threadPoolUtil = new ThreadPoolUtil();
            while (threadPoolUtil.getExecutor().isTerminated()) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
?public class ThreadPoolUtil {
    private static final ExecutorService executor = Executors.newFixedThreadPool(20);
    public ThreadPoolUtil() {
    }
    public ExecutorService getExecutor() {
        return executor;
    }
    public static void submitRunnable(Runnable runnable) {
        executor.submit(runnable);
    }
    public static <V> Future submitCallable(Callable<V> callable) {
        Future<V> submit = executor.submit(callable);
        return submit;
    }
}

到此這篇關(guān)于SpringBoot Test 多線程報(bào)錯(cuò):dataSource already closed的文章就介紹到這了,更多相關(guān)SpringBoot Test 多線程報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基礎(chǔ)高級(jí)綜合練習(xí)題撲克牌的創(chuàng)建

    Java基礎(chǔ)高級(jí)綜合練習(xí)題撲克牌的創(chuàng)建

    今天小編就為大家分享一篇關(guān)于Java基礎(chǔ)高級(jí)綜合練習(xí)題撲克牌的創(chuàng)建,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Java實(shí)現(xiàn)按鍵精靈的示例代碼

    Java實(shí)現(xiàn)按鍵精靈的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)按鍵精靈,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • RestTemplate自定義ErrorHandler方式

    RestTemplate自定義ErrorHandler方式

    這篇文章主要介紹了RestTemplate自定義ErrorHandler方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Mybatis如何動(dòng)態(tài)創(chuàng)建表

    Mybatis如何動(dòng)態(tài)創(chuàng)建表

    這篇文章主要介紹了Mybatis如何動(dòng)態(tài)創(chuàng)建表問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java實(shí)現(xiàn)幾十萬(wàn)條數(shù)據(jù)插入實(shí)例教程(30萬(wàn)條數(shù)據(jù)插入MySQL僅需13秒)

    Java實(shí)現(xiàn)幾十萬(wàn)條數(shù)據(jù)插入實(shí)例教程(30萬(wàn)條數(shù)據(jù)插入MySQL僅需13秒)

    這篇文章主要給大家介紹了關(guān)于Java如何實(shí)現(xiàn)幾十萬(wàn)條數(shù)據(jù)插入的相關(guān)資料,30萬(wàn)條數(shù)據(jù)插入MySQL僅需13秒,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • spring boot2.0實(shí)現(xiàn)優(yōu)雅停機(jī)的方法

    spring boot2.0實(shí)現(xiàn)優(yōu)雅停機(jī)的方法

    這篇文章主要介紹了spring boot2.0實(shí)現(xiàn)優(yōu)雅停機(jī)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Java 數(shù)據(jù)庫(kù)連接池c3p0 介紹

    Java 數(shù)據(jù)庫(kù)連接池c3p0 介紹

    這篇文章主要介給大家分享了 Java 數(shù)據(jù)庫(kù)連接池c3p0 介紹,c3p0 是一個(gè)成熟的、高并發(fā)的 JDBC 連接池庫(kù),支持緩存和 PreparedStatements 的重用。它以LGPL v.2.1或EPL v.1.0授權(quán),下面我們就一起來(lái)看看文章內(nèi)容的詳細(xì)介紹吧,需要的朋友也可以參考一下
    2021-11-11
  • Mybatis-plus3.4.3下使用lambdaQuery報(bào)錯(cuò)解決

    Mybatis-plus3.4.3下使用lambdaQuery報(bào)錯(cuò)解決

    最近在使用lambdaQuery().eq(CommonUser::getOpenId, openId).one()進(jìn)行查詢報(bào)錯(cuò),本文主要介紹了Mybatis-plus3.4.3下使用lambdaQuery報(bào)錯(cuò)解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Tomcat正常啟動(dòng),訪問(wèn)所有頁(yè)面均報(bào)404異常,404異??偨Y(jié)分析

    Tomcat正常啟動(dòng),訪問(wèn)所有頁(yè)面均報(bào)404異常,404異??偨Y(jié)分析

    今天遇到一個(gè)問(wèn)題:Tomcat正常啟動(dòng),訪問(wèn)所有頁(yè)面均報(bào)404異常,究竟該如何解決這個(gè)問(wèn)題呢?下邊小編將為大家介紹一下解決方法,需要的朋友可以參考下
    2013-07-07
  • Java時(shí)間輪調(diào)度算法的代碼實(shí)現(xiàn)

    Java時(shí)間輪調(diào)度算法的代碼實(shí)現(xiàn)

    時(shí)間輪是一種高效的定時(shí)調(diào)度算法,主要用于管理延時(shí)任務(wù)或周期性任務(wù),它通過(guò)一個(gè)環(huán)形數(shù)組(時(shí)間輪)和指針來(lái)實(shí)現(xiàn),將大量定時(shí)任務(wù)分?jǐn)偟焦潭ǖ臅r(shí)間槽中,極大地降低了時(shí)間復(fù)雜度和資源開(kāi)銷,本文給大家介紹了Java時(shí)間輪調(diào)度算法的代碼實(shí)現(xiàn),需要的朋友可以參考下
    2025-03-03

最新評(píng)論

富阳市| 灵武市| 兰考县| 绥江县| 双江| 海晏县| 南通市| 鞍山市| 南投市| 芒康县| 深圳市| 蛟河市| 马关县| 崇明县| 南漳县| 沁源县| 海丰县| 静乐县| 刚察县| 长乐市| 西和县| 淮南市| 嘉黎县| 肇源县| 全州县| 兴安盟| 泰和县| 双柏县| 农安县| 泰宁县| 五指山市| 台州市| 宜良县| 永兴县| 金昌市| 神池县| 日土县| 宝丰县| 襄汾县| 安福县| 徐闻县|