日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JUnit单元测试中多线程的坑

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JUnit单元测试中多线程的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、JUnit單元測試方法不輸出

在JUnit的@Test方法中啟用多線程,新啟動的線程會隨著@Test主線程的死亡而不輸出

二、解決方法

  • 在@Test方法中每創建一個線程,就join一下,這樣我們新建的線程不死亡,Test主線程也不會死亡
  • 讓主線程睡眠一會,等待其它線程結束后本線程在結束
  • 使用CountLatch等同步器同步一下,讓主線程等其它線程結束后在結束
  • 其它方法,總之就是讓@Test的線程等待我們新建的線程運行結束后再結束
    • 方法1 Thread.join()
    @Testpublic void testMultiThread(){Thread thread = new Thread(() -> {try {TimeUnit.SECONDS.sleep(3);System.out.println("子線程執行完畢");} catch (InterruptedException e) {e.printStackTrace();}});thread.start();try {thread.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("@Test線程執行完畢");}輸出: 子線程執行完畢@Test線程執行完畢

    可以看到Test線程會在子線程執行完之后再結束。如果有多個子線程,就讓每個子線程都join一下,這樣Test線程就會等待每一個子線程結束后再結束。

    • 方法2 線程睡眠
    @Testpublic void testMultiThread(){Thread thread = new Thread(() -> {try {TimeUnit.SECONDS.sleep(1);System.out.println("子線程執行完畢");} catch (InterruptedException e) {e.printStackTrace();}});thread.start();try {TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("@Test線程執行完畢");}輸出:子線程執行完畢@Test線程執行完畢
    • 方法3 CountLatch
    @Testpublic void testMultiThread(){CountDownLatch countDownLatch = new CountDownLatch(2);Thread thread = new Thread(() -> {try {TimeUnit.SECONDS.sleep(1);System.out.println("子線程1執行完畢");countDownLatch.countDown();} catch (InterruptedException e) {e.printStackTrace();}});Thread thread2 = new Thread(() -> {try {TimeUnit.SECONDS.sleep(2);System.out.println("子線程2執行完畢");countDownLatch.countDown();} catch (InterruptedException e) {e.printStackTrace();}});thread.start();thread2.start();try {countDownLatch.await();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("@Test線程執行完畢");}輸出:子線程1執行完畢子線程2執行完畢@Test線程執行完畢

    文章轉自

    總結

    以上是生活随笔為你收集整理的JUnit单元测试中多线程的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。