欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java線程中Thread方法下的Join方法詳解

 更新時間:2024年01月18日 10:02:32   作者:小白不很白  
這篇文章主要介紹了Java線程中Thread方法下的Join方法詳解,在項目中往往會遇到這樣一個場景,就是需要等待幾件事情都給做完后才能走下面的事情,這個時候就需要用到Thread方法下的Join方法,join方法是無參且沒有返回值的,需要的朋友可以參考下

等待線程執(zhí)行終止的join方法

在項目中往往會遇到這樣一個場景,就是需要等待幾件事情都給做完后才能走下面的事情。這個時候就需要用到Thread方法下的Join方法。join方法是無參且沒有返回值的。

package com.baidu.onepakage;
public class JoinTest {
    public static void main(String[] args) throws InterruptedException {
        Thread theadOne = new Thread(() -> {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("TheadOne run over");
        });
        Thread threadTwo = new Thread(() -> {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("TheadTwo run over");
        });
        theadOne.start();
        Thread.sleep(1000);
        threadTwo.start();
        System.out.println("main 開始啟動了");
        theadOne.join();
        threadTwo.join();
        System.out.println("main 結束了");
    }
}

上面代碼在調(diào)用join方法的時候,主線程就被被阻塞了,只有當調(diào)用join的方法執(zhí)行結束都才能夠接著往下面執(zhí)行。

執(zhí)行結果:

System.out.println(“TheadOne run over”);
System.out.println(“TheadTwo run over”);
System.out.println(“main 開始啟動了”);
System.out.println(“main 結束了”);

另外線程A調(diào)用線程B的join方法,當其他線程調(diào)用了線程A的interrupt()方法,則A線程會拋出InterruptedException異常而返回。

示例:

package com.baidu.onepakage;
public class JoinTest01 {
    public static void main(String[] args) {
        Thread threadOne = new Thread(() -> {
            for (; ; ) {
            }
        });
        // 獲取主線程
        Thread mainThread = Thread.currentThread();
        // 線程2
        Thread threadTwo = new Thread(() -> {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // 中斷主線程
            mainThread.interrupt();
        });
        threadOne.start();
        threadTwo.start();
        try {
            threadOne.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
            System.out.println(Thread.currentThread().getName() + "發(fā)生了異常");
        }
    }
}

上面是Mian主方法拋出了異常,這是因為在在調(diào)用ThreadOne線程,和ThreadTwo線程時線程one還在執(zhí)行中(死循環(huán)),這個時候main方法處于阻塞狀態(tài),當調(diào)用主方法的interrupt()方法后,Main方法已經(jīng)被阻塞了,所以就拋出了異常并返回了。

到此這篇關于Java線程中Thread方法下的Join方法詳解的文章就介紹到這了,更多相關Thread類下的Join方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java運行時數(shù)據(jù)區(qū)域和類結構詳解

    java運行時數(shù)據(jù)區(qū)域和類結構詳解

    這篇文章主要介紹了java運行時數(shù)據(jù)區(qū)域和類結構,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 淺談為什么重寫equals()就要重寫hashCode()

    淺談為什么重寫equals()就要重寫hashCode()

    困擾我很久的問題,一直不明白為什么重寫equals()方法的時候要重寫hashCode()方法,這次總算弄明白了,作此分享,感興趣的可以了解一下
    2021-10-10
  • Java中接收鍵盤輸入的三種方法

    Java中接收鍵盤輸入的三種方法

    這篇文章主要介紹了Java中接收鍵盤輸入的三種方法,本文給出3個方法實現(xiàn)通過讀取控制臺的輸入與用戶實現(xiàn)交互,需要的朋友可以參考下
    2015-06-06
  • Java基礎知識雜文

    Java基礎知識雜文

    這篇文章主要介紹了Java基礎知識雜文,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • java 中復合機制的實例詳解

    java 中復合機制的實例詳解

    這篇文章主要介紹了java 中復合機制的實例詳解的相關資料,希望通過本文大家能了解繼承和復合的區(qū)別并應用復合這種機制,需要的朋友可以參考下
    2017-09-09
  • 客戶端Socket與服務端ServerSocket串聯(lián)實現(xiàn)網(wǎng)絡通信

    客戶端Socket與服務端ServerSocket串聯(lián)實現(xiàn)網(wǎng)絡通信

    這篇文章主要為大家介紹了客戶端Socket與服務端ServerSocket串聯(lián)實現(xiàn)網(wǎng)絡通信的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • 深入解析HashMap的put方法

    深入解析HashMap的put方法

    在Java集合中,HashMap的重要性不言而喻,作為一種存儲鍵值對的數(shù)據(jù)結構,它在日常開發(fā)中有著非常多的應用場景,也是面試中的高頻考點,本篇文章就來分析一下HashMap集合中的put方法
    2022-01-01
  • Java8內(nèi)存模型PermGen Metaspace實例解析

    Java8內(nèi)存模型PermGen Metaspace實例解析

    這篇文章主要介紹了Java8內(nèi)存模型PermGen Metaspace實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • spring cloud實現(xiàn)Eureka注冊中心的HA的方法

    spring cloud實現(xiàn)Eureka注冊中心的HA的方法

    本篇文章主要介紹了spring cloud實現(xiàn)Eureka注冊中心的HA的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • SpringCache輕松啟用Redis緩存的全過程

    SpringCache輕松啟用Redis緩存的全過程

    Spring Cache是Spring提供的一種緩存抽象機制,旨在通過簡化緩存操作來提高系統(tǒng)性能和響應速度,本文將給大家詳細介紹SpringCache如何輕松啟用Redis緩存,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07

最新評論