【SpringBoot】測試單元使用多線程

? ?????📝個人主頁:五敷有你? ? ??


?🔥系列專欄:SpringBoot
?

??穩重求進,曬太陽

問題產生

今天學習了樂觀鎖,但在測試單元執行多線程的時候出現了問題,多線程并沒有直接結果

在控制臺沒有任何輸出結果。開始搜索問題

答案:

單元測試是不支持多線程的,因為當主線程結束以后,無論子線程結束與否,都會強制退出程序,主線程優先級最高,所以解決辦法是先讓子線程執行完,然后結束主線程,可以利用CountDown計數器來處理。

CountDown

概念

CountDownLatch可以使一個獲多個線程等待其他線程各自執行完畢后再執行。

CountDownLatch 定義了一個計數器,和一個阻塞隊列, 當計數器的值遞減為0之前,阻塞隊列里面的線程處于掛起狀態,當計數器遞減到0時會喚醒阻塞隊列所有線程,這里的計數器是一個標志,可以表示一個任務一個線程,也可以表示一個倒計時器,CountDownLatch可以解決那些一個或者多個線程在執行之前必須依賴于某些必要的前提業務先執行的場景。

CountDownLatch 常用方法說明

  • CountDownLatch(int count); //構造方法,創建一個值為count 的計數器。 ?
  • await();//阻塞當前線程,將當前線程加入阻塞隊列。 ?
  • await(long timeout, TimeUnit unit);//在timeout的時間之內阻塞當前線程,時間一過則當前線程可以執行, ?
  • countDown();//對計數器進行遞減1操作,當計數器遞減至0時,當前線程會去喚醒阻塞隊列里的所有線程。

測試代碼?

    CountDownLatch count=new CountDownLatch(3);@ResourceUserMapper userMapper; 
@Testvoid contextLoads() throws InterruptedException {new Thread(()->{UpdateWrapper<User> wrapper1=new UpdateWrapper();wrapper1.set("name","John").eq("id",3);int update1 = userMapper.update(null, wrapper1);System.out.println("影響的行數"+update1);count.countDown();}).start();new Thread(()->{UpdateWrapper<User> wrapper2=new UpdateWrapper();wrapper2.set("name","jack").eq("id",3);int update2 = userMapper.update(null, wrapper2);System.out.println("影響的行數"+update2);count.countDown();}).start();new Thread(()->{UpdateWrapper<User> wrapper=new UpdateWrapper();wrapper.set("name","hu").eq("id",3);int update = userMapper.update(null, wrapper);System.out.println("影響的行數"+update);count.countDown();}).start();//count為0就被喚醒了count.await();}


3.正確實例,運行成功!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714702.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

KubeSphere平臺安裝系列之二【Linux單節點部署KubeSphere】(2/3)

**《KubeSphere平臺安裝系列》** 【Kubernetes上安裝KubeSphere&#xff08;親測–實操完整版&#xff09;】&#xff08;1/3&#xff09; 【Linux單節點部署KubeSphere】&#xff08;2/3&#xff09; 【Linux多節點部署KubeSphere】&#xff08;3/3&#xff09; **《KubeS…

RocketMQ學習筆記一

課程來源&#xff1a;002-MQ簡介_嗶哩嗶哩_bilibili &#xff08;尚硅谷老雷&#xff0c;時長19h&#xff09; 第1章 RocketMQ概述 1. MQ是什么&#xff1f; 2. MQ用途有哪些&#xff1f; 限流削峰&#xff1b;異步解耦&#xff1b;數據收集。 3. 常見MQ產品有哪些&對比…

Kaggle競賽之Titanic存活預測2

提高代碼規范性&#xff0c;基于上一個 baseline 的提高 import pandas as pd from sklearn.preprocessing import LabelBinarizer from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split#數據劃分方法 from sklearn.ensem…

哪個超聲波清洗機品牌值得入手?銷量榜品牌值得選購!

在科技日益發展的今天&#xff0c;超聲波清洗技術以其高效、便捷和深度清潔的特點&#xff0c;已經深入到生活的諸多領域&#xff0c;從精密儀器到珠寶首飾&#xff0c;從眼鏡框到假牙&#xff0c;甚至是廚房用品的日常護理&#xff0c;都能見到超聲波清洗機的身影。面對市場上…

無人機兩次飛行的圖像數據配準與幾何校正方法研究

標題: 無人機兩次飛行的圖像數據配準與幾何校正方法研究 摘要: 本文研究了利用無人機獲取的兩次飛行的圖像數據進行配準與幾何校正的方法。無人機航拍技術在地理信息獲取和空間數據應用中具有重要意義,但由于飛行條件、攝影設備和環境等因素的影響,同一區域的不同飛行任務…

【基頻提取算法-YIN】

本文對基頻提取算法 YIN 做以介紹。如有表述不當之處歡迎批評指正。歡迎任何形式的轉載&#xff0c;但請務必注明出處。 文章目錄 1. 引言2. YIN 各模塊代碼講解2.1. 差分函數的實現2.2. 累積均值歸一化差分函數的實現2.3. 絕對閾值2.4. 拋物線插值2.5. 最優局部估計 3. 總結 1…

免殺實戰-EDR對抗

文章目錄 殺軟分析BOF.NET 殺軟分析 x64dgb簡單調試發現該edr在r3環對ntdll.dll和kernel32.dll關鍵函數均存在hook&#xff0c;這里硬盤讀取原來的dll進行重新加載&#xff0c;原理如圖 loader // dllmain.cpp : 定義 DLL 應用程序的入口點。 #include "pch.h" #in…

DSI2協議之BTA行為理解

概念: DSI協議spec支持總線控制權在master和slave之間發生交換,即通過bus turn around來實現; BUS TURN AROUND: BTA 的實現是通過controller—>cdphy的turnrequest信號來實現; 關于控制器發出turnrequest給phy,phy通過lvds/trio線輸出turnaround sequence如下圖中…

LeetCode刷題筆記之二叉樹(四)

一、二叉搜索樹的應用 1. 700【二叉搜索樹中的搜索】 題目&#xff1a; 給定二叉搜索樹&#xff08;BST&#xff09;的根節點 root 和一個整數值 val。你需要在 BST 中找到節點值等于 val 的節點。 返回以該節點為根的子樹。 如果節點不存在&#xff0c;則返回 null 。代碼&a…

BUGKU 本地管理員

打開環境&#xff0c;先F12查看看到一串代碼。Base64解碼一下&#xff0c;得到的應該是密碼&#xff0c;然后輸入admin | test123試一下 使用BP抓包&#xff0c;修改XFF&#xff0c;得到flag

將鏡像上傳到私有鏡像倉庫Harbor

首先你需要安裝Harbor服務&#xff1a; https://blog.csdn.net/qq_50247813/article/details/136388229 客戶端已經安裝docker&#xff1a; https://docs.docker.com/engine/install/centos/ 在docker客戶端登錄 Harbor 我的Harbor 服務器地址&#xff1a; 192.168.44.161 賬號…

關于編寫測試用例的一些思考

測試用例是QA同學的基本功&#xff0c;每個人都有一套編寫測試用例的體系&#xff0c;本文是作者結合自身的工作經驗以及閱讀一些測試相關的書籍后的一些看法&#xff0c;歡迎大家一起討論學習。 測試設計 測試用例格式 面試中一些常見的問題 1.APP測試與服務端測試的區別&am…

微服務中的Feign:優雅實現遠程調用的秘密武器(二)

本系列文章簡介&#xff1a; 本系列文章將深入探討Feign的特點、原理以及在微服務中的應用場景&#xff0c;幫助讀者更好地理解和使用這個優秀的遠程調用工具。無論您是初學者還是有經驗的開發人員&#xff0c;本文都將為您揭示Feign的秘密&#xff0c;并帶您一起走進微服務的世…

何愷明新作 l-DAE:解構擴散模型

何愷明新作 l-DAE&#xff1a;解構擴散模型 提出背景擴散模型步驟如何在不影響數據表征能力的同時簡化模型&#xff1f;如何進一步推動模型向經典DAE靠攏&#xff1f;如何去除對生成任務設計的DDM中不適用于自監督學習的部分&#xff1f;如何改進DDM以專注于清晰圖像表示的學習…

2024華為軟件測試筆試面試真題,抓緊收藏不然就看不到了

一、選擇題 1、對計算機軟件和硬件資源進行管理和控制的軟件是&#xff08;D&#xff09; A.文件管理程序 B.輸入輸出管理程序 C.命令出來程序 D.操作系統 2、在沒有需求文檔和產品說明書的情況下只有哪一種測試方法可以進行的&#xff08;A&#xff09; A.錯誤推測法測試…

Docker 快速入門實操教程(完結)

Docker 快速入門實操教程&#xff08;完結&#xff09; Docker&#xff0c;啟動&#xff01; 如果安裝好Docker不知道怎么使用&#xff0c;不理解各個名詞的概念&#xff0c;不太了解各個功能的用途&#xff0c;這篇文章應該會對你有幫助。 前置條件&#xff1a;已經安裝Doc…

【Hadoop】在spark讀取clickhouse中數據

讀取clickhouse數據庫數據 import scala.collection.mutable.ArrayBuffer import java.util.Properties import org.apache.spark.sql.SaveMode import org.apache.spark.sql.SparkSessiondef getCKJdbcProperties(batchSize: String "100000",socketTimeout: Strin…

IOS 發布遇到“Unable to authenticate with App Store Connect”錯誤咋解決?

問題&#xff1a; 在開發ios app后&#xff0c;先發布adhoc版本&#xff0c;測試通過后&#xff0c;再發布testflight版本測試&#xff0c;但是可能會遇到一下問題。 解決辦法&#xff1a; 在Signing &Capabilities中&#xff0c;在ios下邊要指定有發布權限的Team賬號&a…

PAT (Basic Level) Practice | 判斷題

判斷題的評判很簡單&#xff0c;本題就要求你寫個簡單的程序幫助老師判題并統計學生們判斷題的得分。 輸入格式 輸入在第一行給出兩個不超過 100 的正整數 N 和 M&#xff0c;分別是學生人數和判斷題數量。第二行給出 M 個不超過 5 的正整數&#xff0c;是每道題的滿分值。第…

pytorch基礎2-數據集與歸一化

專題鏈接&#xff1a;https://blog.csdn.net/qq_33345365/category_12591348.html 本教程翻譯自微軟教程&#xff1a;https://learn.microsoft.com/en-us/training/paths/pytorch-fundamentals/ 初次編輯&#xff1a;2024/3/2&#xff1b;最后編輯&#xff1a;2024/3/2 本教程…