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

Java線程編程中isAlive()和join()的使用詳解

 更新時間:2015年09月29日 15:34:13   投稿:goldensun  
這篇文章主要介紹了Java線程編程中isAlive()和join()的使用詳解,是Java入門學習中的基礎(chǔ)知識,需要的朋友可以參考下

一個線程如何知道另一線程已經(jīng)結(jié)束?Thread類提供了回答此問題的方法。

有兩種方法可以判定一個線程是否結(jié)束。第一,可以在線程中調(diào)用isAlive()。這種方法由Thread定義,它的通常形式如下:

  final boolean isAlive( )

如果所調(diào)用線程仍在運行,isAlive()方法返回true,如果不是則返回false。但isAlive()很少用到,等待線程結(jié)束的更常用的方法是調(diào)用join(),描述如下:

  final void join( ) throws InterruptedException

該方法等待所調(diào)用線程結(jié)束。該名字來自于要求線程等待直到指定線程參與的概念。join()的附加形式允許給等待指定線程結(jié)束定義一個最大時間。下面是前面例子的改進版本。運用join()以確保主線程最后結(jié)束。同樣,它也演示了isAlive()方法。

// Using join() to wait for threads to finish.
class NewThread implements Runnable {
  String name; // name of thread
  Thread t;
  NewThread(String threadname) {
    name = threadname;
    t = new Thread(this, name);
    System.out.println("New thread: " + t);
    t.start(); // Start the thread
  }
  // This is the entry point for thread.
  public void run() {
    try {
      for(int i = 5; i > 0; i--) {
        System.out.println(name + ": " + i);
        Thread.sleep(1000);
      }
    } catch (InterruptedException e) {
      System.out.println(name + " interrupted.");
    }
    System.out.println(name + " exiting.");
  }
}

class DemoJoin {
  public static void main(String args[]) {
    NewThread ob1 = new NewThread("One");
    NewThread ob2 = new NewThread("Two");
    NewThread ob3 = new NewThread("Three");
    System.out.println("Thread One is alive: "+ ob1.t.isAlive());
    System.out.println("Thread Two is alive: "+ ob2.t.isAlive());
    System.out.println("Thread Three is alive: "+ ob3.t.isAlive());
    // wait for threads to finish
    try {
      System.out.println("Waiting for threads to finish.");
      ob1.t.join();
      ob2.t.join();
      ob3.t.join();
    } catch (InterruptedException e) {
      System.out.println("Main thread Interrupted");
    }
    System.out.println("Thread One is alive: "+ ob1.t.isAlive());
    System.out.println("Thread Two is alive: "+ ob2.t.isAlive());
    System.out.println("Thread Three is alive: "+ ob3.t.isAlive());
    System.out.println("Main thread exiting.");
  }
}

程序輸出如下所示:

New thread: Thread[One,5,main]
New thread: Thread[Two,5,main]
New thread: Thread[Three,5,main]
Thread One is alive: true
Thread Two is alive: true
Thread Three is alive: true
Waiting for threads to finish.
One: 5
Two: 5
Three: 5
One: 4
Two: 4
Three: 4
One: 3
Two: 3
Three: 3
One: 2
Two: 2
Three: 2
One: 1
Two: 1
Three: 1
Two exiting.
Three exiting.
One exiting.
Thread One is alive: false
Thread Two is alive: false
Thread Three is alive: false
Main thread exiting.

如你所見,調(diào)用join()后返回,線程終止執(zhí)行。

相關(guān)文章

  • SpringBoot實現(xiàn)過濾敏感詞的示例代碼

    SpringBoot實現(xiàn)過濾敏感詞的示例代碼

    這篇文章主要為大家詳細介紹了如何利用SpringBoot實現(xiàn)過濾敏感詞功能,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下
    2022-08-08
  • Java Builder模式實現(xiàn)原理及優(yōu)缺點解析

    Java Builder模式實現(xiàn)原理及優(yōu)缺點解析

    這篇文章主要介紹了Java Builder模式實現(xiàn)原理及優(yōu)缺點解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Spring?Cloud?Alibaba使用Nacos作為注冊中心和配置中心

    Spring?Cloud?Alibaba使用Nacos作為注冊中心和配置中心

    這篇文章主要為大家介紹了Spring?Cloud?Alibaba使用Nacos作為注冊中心和配置中心的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 詳解Spring注解驅(qū)動開發(fā)之屬性賦值

    詳解Spring注解驅(qū)動開發(fā)之屬性賦值

    今天帶大家學習Spring注解驅(qū)動開發(fā)的相關(guān)知識,文中有非常詳細的代碼示例,對正在學習Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java+MySQL實現(xiàn)學生信息管理系統(tǒng)源碼

    Java+MySQL實現(xiàn)學生信息管理系統(tǒng)源碼

    這篇文章主要為大家詳細介紹了Java+MySQL實現(xiàn)學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 深入理解Java線程池從設(shè)計思想到源碼解讀

    深入理解Java線程池從設(shè)計思想到源碼解讀

    這篇文章主要介紹了深入理解Java線程池從設(shè)計思想到源碼解讀,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • java  StringBuilder類的詳解及簡單實例

    java StringBuilder類的詳解及簡單實例

    這篇文章主要介紹了java StringBuilder類的詳解及簡單實例的相關(guān)資料,實現(xiàn)了StringBuilder類的追加、插入、替換、刪除等操作,需要的朋友可以參考下
    2017-08-08
  • MyBatisPlus 查詢selectOne方法實現(xiàn)

    MyBatisPlus 查詢selectOne方法實現(xiàn)

    本文主要介紹了MyBatisPlus 查詢selectOne方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Java中的類初始化解析

    Java中的類初始化解析

    這篇文章主要介紹了Java中的類初始化解析,類的初始化是一個Java類生命周期中的其中一個階段,初始化是類加載的最后一個階段,也正是在初始化階段,才會真正開始執(zhí)行類中所寫的Java代碼,需要的朋友可以參考下
    2023-08-08
  • jvm oom排查記錄剖析

    jvm oom排查記錄剖析

    這篇文章主要為大家介紹了jvm oom排查記錄剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論