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

Java多線程 線程組原理及實(shí)例詳解

 更新時(shí)間:2019年09月06日 08:39:07   作者:慢慢來(lái)  
這篇文章主要介紹了Java多線程 線程組原理及實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

線程組

線程組可以批量管理線程和線程組對(duì)象。

一級(jí)關(guān)聯(lián)

例子如下,建立一級(jí)關(guān)聯(lián)。

public class MyThread43 implements Runnable{
  public void run()
  {
    try
    {
      while (!Thread.currentThread().isInterrupted())
      {
        System.out.println("ThreadName = " + Thread.currentThread().getName());
        Thread.sleep(3000);
      }
    }
    catch (InterruptedException e)
    {
      e.printStackTrace();
    }
  }

  public static void main(String[] args)
  {
    MyThread43 mt0 = new MyThread43();
    MyThread43 mt1 = new MyThread43();
    ThreadGroup tg = new ThreadGroup("新建線程組1");
    Thread t0 = new Thread(tg, mt0);
    Thread t1 = new Thread(tg, mt1);
    t0.start();
    t1.start();
    System.out.println("活動(dòng)的線程數(shù)為:" + tg.activeCount());
    System.out.println("線程組的名稱為:" + tg.getName());
  }
}

輸出結(jié)果如下

活動(dòng)的線程數(shù)為:2
線程組的名稱為:新建線程組1
ThreadName = Thread-0
ThreadName = Thread-1
ThreadName = Thread-0
ThreadName = Thread-1
ThreadName = Thread-1
ThreadName = Thread-0
ThreadName = Thread-1
ThreadName = Thread-0
······

每隔三秒輸出兩個(gè)線程名稱,符合預(yù)期。

線程組自動(dòng)歸組屬性

public class ThreadDomain49 {
  public static void main(String[] args) {
    System.out.println("A處線程:" + Thread.currentThread().getName() + ", 所屬線程:" + Thread.currentThread().getThreadGroup().getName() +
        ", 組中有線程組數(shù)量:" + Thread.currentThread().getThreadGroup().activeGroupCount());
    ThreadGroup group = new ThreadGroup("新的組");
    System.out.println("B處線程:" + Thread.currentThread().getName() + ", 所屬線程:" + Thread.currentThread().getThreadGroup().getName() +
        ", 組中有線程組數(shù)量:" + Thread.currentThread().getThreadGroup().activeGroupCount());
    ThreadGroup[] tg = new ThreadGroup[Thread.currentThread().getThreadGroup().activeGroupCount()];
    Thread.currentThread().getThreadGroup().enumerate(tg);
    for (int i = 0; i < tg.length; i++)
      System.out.println("第一個(gè)線程組名稱為:" + tg[i].getName());
  }
}

輸出結(jié)果如下

A處線程:main, 所屬線程:main, 組中有線程組數(shù)量:0
B處線程:main, 所屬線程:main, 組中有線程組數(shù)量:1
第一個(gè)線程組名稱為:新的組

沒(méi)有指定線程組,則歸屬到當(dāng)前線程所屬的組。

根線程組

public class ThreadDomain50 {
  public static void main(String[] args)
  {
    System.out.println(Thread.currentThread().getThreadGroup().getParent().getName());
    System.out.println(Thread.currentThread().getThreadGroup().getParent().getParent().getName());
  }
}

運(yùn)行結(jié)果

system
Exception in thread "main" java.lang.NullPointerException
  at com.advance.MultiThread3.MyThread.ThreadDomain50.main(ThreadDomain50.java:14)

當(dāng)前線程的線程組的父線程組是系統(tǒng)線程組;系統(tǒng)線程組的父線程組不存在;系統(tǒng)線程組就是根線程組。

批量停止組內(nèi)線程

請(qǐng)看示例

public class MyThread44 extends Thread{

  public MyThread44(ThreadGroup tg, String name)
  {
    super(tg, name);
  }

  public void run()
  {
    System.out.println("ThreadName = " + Thread.currentThread().getName() +
        "準(zhǔn)備開(kāi)始死循環(huán)了");
    while (!this.isInterrupted()){}
    System.out.println("ThreadName = " + Thread.currentThread().getName() +
        "結(jié)束了");
  }

  public static void main(String[] args) throws InterruptedException {
    ThreadGroup tg = new ThreadGroup("我的線程組");
    MyThread44 mt = null;
    for (int i = 0; i < 3; i++)
    {
      mt = new MyThread44(tg, "線程" + i);
      mt.start();
    }
    Thread.sleep(5000);
    tg.interrupt();
    System.out.println("調(diào)用了interrupt()方法");
  }
}

輸出結(jié)果如下

ThreadName = 線程0準(zhǔn)備開(kāi)始死循環(huán)了
ThreadName = 線程1準(zhǔn)備開(kāi)始死循環(huán)了
ThreadName = 線程2準(zhǔn)備開(kāi)始死循環(huán)了
調(diào)用了interrupt()方法
ThreadName = 線程0結(jié)束了
ThreadName = 線程2結(jié)束了
ThreadName = 線程1結(jié)束了

可以看到,ThreadGroup的interrupt方法批量中斷線程組的線程。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java SpringBoot使用guava過(guò)濾器

    Java SpringBoot使用guava過(guò)濾器

    這篇文章主要介紹了Java SpringBoot使用guava過(guò)濾器,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)與算法之棧(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    Java數(shù)據(jù)結(jié)構(gòu)與算法之棧(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法之棧,棧是先進(jìn)后出的數(shù)據(jù)的結(jié)構(gòu),本文通過(guò)文字說(shuō)明與實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友跟著小編一起學(xué)習(xí)吧
    2017-04-04
  • Java算法中的歸并排序算法代碼實(shí)現(xiàn)

    Java算法中的歸并排序算法代碼實(shí)現(xiàn)

    這篇文章主要介紹了Java算法中的歸并排序算法代碼實(shí)現(xiàn),歸并排序使用的是分治思想(Divide and Conquer),分治,顧名思義,就是分而治之,是將一個(gè)大問(wèn)題分解成小的子問(wèn)題來(lái)解決,需要的朋友可以參考下
    2023-12-12
  • map實(shí)現(xiàn)按value升序排序

    map實(shí)現(xiàn)按value升序排序

    map內(nèi)部是按照hash算法存儲(chǔ)的,但如果能對(duì)map排序在某些時(shí)候還是有用的,下面實(shí)現(xiàn)對(duì)map按照value升序排序,實(shí)現(xiàn)對(duì)map按照key排序,大家參考使用吧
    2014-01-01
  • java實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲

    java實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Java獲取IP地址以及MAC地址的示例代碼

    Java獲取IP地址以及MAC地址的示例代碼

    IP地址是用于在網(wǎng)絡(luò)上識(shí)別設(shè)備的唯一地址,而MAC地址是設(shè)備的物理地址,本文主要介紹了Java獲取IP地址以及MAC地址的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • 關(guān)于Springboot | @RequestBody 接收到的參數(shù)對(duì)象屬性為空的問(wèn)題

    關(guān)于Springboot | @RequestBody 接收到的參數(shù)對(duì)象屬性為空的問(wèn)題

    這篇文章主要介紹了關(guān)于Springboot | @RequestBody 接收到的參數(shù)對(duì)象屬性為空的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Shell重啟SpringBoot項(xiàng)目腳本的示例代碼(含服務(wù)守護(hù))

    Shell重啟SpringBoot項(xiàng)目腳本的示例代碼(含服務(wù)守護(hù))

    本文介紹了如何使用?Bash?腳本來(lái)管理和守護(hù)運(yùn)行服務(wù),將展示一個(gè)示例腳本,該腳本可以停止、啟動(dòng)和守護(hù)運(yùn)行一個(gè)服務(wù),并提供了相應(yīng)的解釋和用法說(shuō)明,文章通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java ArrayList擴(kuò)容問(wèn)題實(shí)例詳解

    Java ArrayList擴(kuò)容問(wèn)題實(shí)例詳解

    這篇文章主要介紹了Java ArrayList擴(kuò)容問(wèn)題實(shí)例詳解,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Spring中過(guò)濾器(Filter)和攔截器(Interceptor)的區(qū)別和聯(lián)系解析

    Spring中過(guò)濾器(Filter)和攔截器(Interceptor)的區(qū)別和聯(lián)系解析

    在我們?nèi)粘5拈_(kāi)發(fā)中,我們經(jīng)常會(huì)用到Filter和Interceptor,這篇文章主要介紹了Spring中過(guò)濾器(Filter)和攔截器(Interceptor)的區(qū)別和聯(lián)系?,需要的朋友可以參考下
    2022-10-10

最新評(píng)論