Java中ThreadGroup的原理和使用方法

本篇內(nèi)容主要講解“Java中ThreadGroup的原理和使用方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java中ThreadGroup的原理和使用方法”吧!

10年積累的網(wǎng)站制作、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有郟縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1. 引子

Thread類有多個(gè)構(gòu)造函數(shù),其中一個(gè)如下:

public Thread(ThreadGroup group, String name) {
  init(group, null, name, 0);
}

傳入一個(gè)ThreadGroup參數(shù),表示當(dāng)前線程所屬的線程組。源碼中上面的init最終實(shí)現(xiàn)如下:

private void init(ThreadGroup g, Runnable target, String name,
                  long stackSize, AccessControlContext acc,
                  boolean inheritThreadLocals) {
  ......
    if (g == null) {
      g = parent.getThreadGroup();
    }
}

可知:如果沒(méi)有設(shè)置這個(gè)線程組,那么創(chuàng)建的線程的線程組即為其父線程的線程組,也就是當(dāng)前線程。如果當(dāng)前線程是main線程,main線程的group名字也叫main,那么在main方法中創(chuàng)建的新線程的group也是main。本文就ThreadGroup類進(jìn)行學(xué)習(xí)。

2. 創(chuàng)建ThreadGroup

線程有父子之稱,線程組也有父子之稱。

ThreadGroup類的構(gòu)造函數(shù)有:

public ThreadGroup(ThreadGroup parent, String name);
public ThreadGroup(String name) {
    this(Thread.currentThread().getThreadGroup(), name);
}

構(gòu)造函數(shù)可以指定當(dāng)前創(chuàng)建的線程組的父線程組,如果沒(méi)有指定就指定當(dāng)前線程的線程組作為新創(chuàng)建的線程組的父線程組。

下面是一個(gè)demo進(jìn)行驗(yàn)證,結(jié)果打印為true。

public static void main(String[] args) throws Exception {

  ThreadGroup threadGroup = Thread.currentThread().getThreadGroup();

  ThreadGroup threadGroup1 = new ThreadGroup("threadGroup1");

  System.out.println(threadGroup1.getParent() == threadGroup);

}

2. ThreadGroup復(fù)制

一個(gè)線程組中可以添加多個(gè)線程和子線程組,可以使用其復(fù)制方法,復(fù)制出這些線程和線程組:

public int enumerate(Thread list[]);
public int enumerate(Thread list[], boolean recurse);

參數(shù)recurse為true表示遞歸將所有子線程組中的線程也拷貝到數(shù)組中,如果沒(méi)有這個(gè)參數(shù),默認(rèn)就是true。

除了拷貝線程組中的線程以外,還可拷貝線程組中的子線程組:

public int enumerate(ThreadGroup list[]);
public int enumerate(ThreadGroup list[], boolean recurse);

recurse意思也是表示是否進(jìn)行遞歸和拷貝。

3. 總結(jié)

線程組不是用來(lái)管理線程的,而是針對(duì)線程的一次組織。

到此,相信大家對(duì)“Java中ThreadGroup的原理和使用方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

新聞標(biāo)題:Java中ThreadGroup的原理和使用方法
新聞來(lái)源:http://muchs.cn/article44/ijscee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、搜索引擎優(yōu)化動(dòng)態(tài)網(wǎng)站、網(wǎng)站建設(shè)品牌網(wǎng)站建設(shè)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司