亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

  final boolean isAlive( )

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

  final void join( ) throws InterruptedException

該方法等待所調(diào)用線(xiàn)程結(jié)束。該名字來(lái)自于要求線(xiàn)程等待直到指定線(xiàn)程參與的概念。join()的附加形式允許給等待指定線(xiàn)程結(jié)束定義一個(gè)最大時(shí)間。下面是前面例子的改進(jìn)版本。運(yùn)用join()以確保主線(xiàn)程最后結(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.

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

相關(guān)文章

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

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

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

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

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

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

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

    詳解Spring注解驅(qū)動(dòng)開(kāi)發(fā)之屬性賦值

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

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

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

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

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

    java StringBuilder類(lèi)的詳解及簡(jiǎn)單實(shí)例

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

    MyBatisPlus 查詢(xún)selectOne方法實(shí)現(xiàn)

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

    Java中的類(lèi)初始化解析

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

    jvm oom排查記錄剖析

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

最新評(píng)論