最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java ThreadGroup的作用及方法詳解

 更新時(shí)間:2021年10月12日 09:12:50   作者:知我飯否  
這篇文章主要介紹了java ThreadGroup的作用及方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

ThreadGroup的作用及方法

ThreadGroup線程組,java對(duì)這個(gè)類的描述呢就是

“線程組表示一組線程。此外,線程組還可以包括其他線程組。線程組形成一個(gè)樹,其中除了初始線程組之外的每個(gè)線程組都有一個(gè)父線程組。

允許線程訪問關(guān)于其線程組的信息,但不允許訪問關(guān)于其線程組的父線程組或任何其他線程組的信息?!?/p>

ThreadGroup并不是算是標(biāo)注容器,因?yàn)?,最后你?huì)發(fā)現(xiàn)這個(gè)家伙是沒有public的 add,remove方法的。那怎么把線程放到線程組里面呢?

答案是 在new Thread(參數(shù)),將ThreadGroup當(dāng)做參數(shù)傳進(jìn)去。

Field

private final ThreadGroup parent;// 線程組的線程組,final 表名 線程組 不可以隨便變更
String name; //名字
int maxPriority;//這個(gè)線程組 的元素 例如 線程 線程組的最大優(yōu)先級(jí),具體實(shí)現(xiàn)是 當(dāng)線程或者線程組自身設(shè)定優(yōu)先級(jí)的時(shí)候,總是取  自己父線程組的優(yōu)先級(jí)和要設(shè)定的優(yōu)先級(jí)的最小值
boolean destroyed;//判斷是否銷毀了
boolean daemon;//當(dāng)守護(hù)進(jìn)程線程組的最后一個(gè)線程停止或最后一個(gè)線程組被銷毀時(shí),將自動(dòng)銷毀該線程組。
int nUnstartedThreads = 0;
int nthreads;//這個(gè)線程組  里面的線程數(shù)量
Thread threads[];//線程數(shù)組 ,持有 線程的引用
int ngroups;//這個(gè)線程組  里面的線程組數(shù)量
ThreadGroup groups[];//線程組數(shù)組 ,持有 線程組的引用

私有構(gòu)造方法

創(chuàng)建不在任何線程組中的空線程組。

此方法用于創(chuàng)建系統(tǒng)線程組。

private ThreadGroup()

公共構(gòu)造方法

//創(chuàng)建一個(gè)新線程組。這個(gè)新組的父線程組是指定的線程組parent。線程組的 名字 就是name
會(huì)對(duì) parent 調(diào)用checkAccess() 確定當(dāng)前運(yùn)行的線程是否具有修改此線程組的權(quán)限(比如 設(shè)置setDaemon)。有可能會(huì)拋出SecurityException異常
public ThreadGroup(ThreadGroup parent, String name)
//構(gòu)造一個(gè)新線程組。這個(gè)新組的父線程組是當(dāng)前運(yùn)行線程的線程組。 就是調(diào)用上面的方法
public ThreadGroup(String name) {
    this(Thread.currentThread().getThreadGroup(), name);
}

公共方法

public final String getName()//返回線程組名字
//返回父線程組  parent 調(diào)用checkAccess() 確定當(dāng)前運(yùn)行的線程是否具有修改此線程組的權(quán)限。
//有可能會(huì)拋出SecurityException異常
public final ThreadGroup getParent()
public final int getMaxPriority() //返回線程組優(yōu)先級(jí)
//測試此線程組是否是守護(hù)進(jìn)程線程組。當(dāng)守護(hù)進(jìn)程線程組的最后一個(gè)線程停止或最后一個(gè)線程組被銷毀時(shí),將自動(dòng)銷毀該線程組。
public final boolean isDaemon() 
public synchronized boolean isDestroyed()//測試該線程組是否已被銷毀。 
public final void setDaemon(boolean daemon)//將線程組設(shè)置成守護(hù)線程組 ,會(huì)檢查 當(dāng)前線程是否具有權(quán)限 修改線程組
 //設(shè)定當(dāng)前線程組以及子線程組的 優(yōu)先級(jí),取pri和當(dāng)前線程組的父線程組的優(yōu)先級(jí)的較小值為準(zhǔn)。 
 //這個(gè)之所以會(huì)限制 Thread的最大優(yōu)先級(jí) 
 //具體實(shí)現(xiàn)是 當(dāng)線程或者線程組自身設(shè)定優(yōu)先級(jí)的時(shí)候,總是取  自己父線程組的優(yōu)先級(jí)和要設(shè)定的優(yōu)先級(jí)的最小值
 //會(huì)檢查 當(dāng)前線程是否具有權(quán)限 修改線程組
public final void setMaxPriority(int pri)
 //測試,當(dāng)前這個(gè)線程組是否是 g線程組的父線程 或者參數(shù)
public final boolean parentOf(ThreadGroup g)
 //檢查 當(dāng)前線程是否具有權(quán)限 修改線程組  比如在當(dāng)前線程中 用線程組自己本身調(diào)用它自己的一些方法 ,都會(huì)檢查
public final void checkAccess()
//返回此線程組及其子線程組中活動(dòng)線程數(shù)量的估計(jì)值。遞歸地遍歷此線程組中的所有子組。 如果當(dāng)前線程組已經(jīng)destroyed,返回0 
public int activeCount()
//將線程組的中線程 活動(dòng)線程放入list[]里面 會(huì)自動(dòng)擴(kuò)大這個(gè)數(shù)組,如果{@code recurse}為{@code true},則此方法遞歸枚舉此線程組的所有子組,并引用這些子組中的每個(gè)活動(dòng)線程
                                             //注意這個(gè)聲明數(shù)組的方式
public int enumerate(Thread list[], boolean recurse)
//和上面方法類似  只不過 下面這個(gè) ThreadGroup
public int enumerate(ThreadGroup list[])
public int enumerate(ThreadGroup list[], boolean recurse)
 //返回此線程組及其子組中活動(dòng)組的數(shù)量的估計(jì)值。遞歸地遍歷此線程組中的所有子組。
public int activeGroupCount()
//interrupt此線程組中的所有線程。包括 子線程組中的線程
public final void interrupt()

特殊的一個(gè)方法

public void uncaughtException(Thread t, Throwable e)

這個(gè)方法呢,作用很簡單 使 t 線程 拋出一個(gè) Throwable e的異常。這個(gè)e 異常 也是你自己定義的。如果前面設(shè)置了,

Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
    System.out.println("默認(rèn)的  "+t.getName());
    System.out.println("默認(rèn)的  "+e);
});

那么,在上面自定義的Throwable 會(huì)被這個(gè)捕獲,如果沒有設(shè)置,就打印標(biāo)注錯(cuò)誤流。對(duì)這個(gè)方法,存在的意義 比較困惑

        Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
            System.out.println("默認(rèn)的  "+t.getName());
            System.out.println("默認(rèn)的  "+e);
        });
        ThreadGroup threadGroup = new ThreadGroup("father");
        Thread two = new Thread(threadGroup,"two");
        threadGroup.uncaughtException(two,new IllegalAccessException("ssss"));

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

線程組(ThreadGroup類)

線程組表示一個(gè)線程的集合。線程組也可以包含其他線程組。線程執(zhí)行完就會(huì)被回收。

private static void methodA() {
    MyThread my = new MyThread() ;
        
    //創(chuàng)建線程類對(duì)象
        
    Thread t1 = new Thread(my, "線程1") ;
    Thread t2 = new Thread(my, "線程2") ;
        
    //public final ThreadGroup getThreadGroup()返回該線程所屬的線程組
    ThreadGroup tg1 = t1.getThreadGroup() ;
    ThreadGroup tg2 = t2.getThreadGroup() ;
        
    //public final String getName():返回線程組的名稱
    System.out.println(tg1.getName()); //main
    System.out.println(tg2.getName());//main
        
    //所有的線程它默認(rèn)的線程組名稱:main(主線程),主線程是包含在線程組里面的
    System.out.println(Thread.currentThread().getThreadGroup().getName());//main
}
private static void methodB() {
       //public ThreadGroup(String name)構(gòu)造一個(gè)新線程組
    ThreadGroup tg = new ThreadGroup("新的線程組") ;
        
    MyThread my = new MyThread() ;
    
        //Thread(ThreadGroup group, Runnable target, String name)
    Thread t1 = new Thread(tg, my, "線程1") ;
    Thread t2 = new Thread(tg, my, "線程2") ;
        
    //直接獲取線程組名稱
    System.out.println(t1.getThreadGroup().getName());
    System.out.println(t2.getThreadGroup().getName());
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis-plus在yml中配置詳解

    mybatis-plus在yml中配置詳解

    本文主要介紹了mybatis-plus在yml中配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • spring-boot-maven-plugin:打包時(shí)排除provided依賴問題

    spring-boot-maven-plugin:打包時(shí)排除provided依賴問題

    這篇文章主要介紹了spring-boot-maven-plugin:打包時(shí)排除provided依賴問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java中volatile防止指令重排

    Java中volatile防止指令重排

    volatile可以防止指令重排,在多線程環(huán)境下有時(shí)候我們需要使用volatile來防止指令重排,來保證代碼運(yùn)行后數(shù)據(jù)的準(zhǔn)確性,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 詳解SpringCloud Gateway之過濾器GatewayFilter

    詳解SpringCloud Gateway之過濾器GatewayFilter

    這篇文章主要介紹了詳解SpringCloud Gateway之過濾器GatewayFilter,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • SpringBoot如何訪問html和js等靜態(tài)資源配置

    SpringBoot如何訪問html和js等靜態(tài)資源配置

    這篇文章主要介紹了SpringBoot如何訪問html和js等靜態(tài)資源配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot接口返回?cái)?shù)據(jù)脫敏(Mybatis、Jackson)

    SpringBoot接口返回?cái)?shù)據(jù)脫敏(Mybatis、Jackson)

    有時(shí)候,我們接口返回的數(shù)據(jù)需要做一些處理,有一些敏感數(shù)據(jù),本文主要介紹了SpringBoot接口返回?cái)?shù)據(jù)脫敏(Mybatis、Jackson),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Java編程實(shí)現(xiàn)基于用戶的協(xié)同過濾推薦算法代碼示例

    Java編程實(shí)現(xiàn)基于用戶的協(xié)同過濾推薦算法代碼示例

    這篇文章主要介紹了Java編程實(shí)現(xiàn)基于用戶的協(xié)同過濾推薦算法代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 基于java file 文件操作operate file of java的應(yīng)用

    基于java file 文件操作operate file of java的應(yīng)用

    本篇文章介紹了,基于java file 文件操作operate file of java的應(yīng)用。需要的朋友參考下
    2013-05-05
  • Springboot異常日志輸出方式

    Springboot異常日志輸出方式

    這篇文章主要介紹了Springboot異常日志輸出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 如何將maven源改為國內(nèi)阿里云鏡像

    如何將maven源改為國內(nèi)阿里云鏡像

    在使用Maven打包Scala程序時(shí),默認(rèn)是從位于國外的Maven中央倉庫下載相關(guān)的依賴,造成我們從國內(nèi)下載依賴時(shí)速度很慢,下面這篇文章主要給大家介紹了關(guān)于如何將maven源改為國內(nèi)阿里云鏡像的相關(guān)資料,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

鄂尔多斯市| 凌源市| 呈贡县| 清新县| 女性| 山阴县| 常熟市| 成武县| 临桂县| 西峡县| 鄄城县| 九江市| 保定市| 翼城县| 张家口市| 大庆市| 肥乡县| 嘉善县| 江城| 乌鲁木齐县| 兴仁县| 云霄县| 台北县| 丹巴县| 龙泉市| 定州市| 咸阳市| 龙门县| 和田市| 永城市| 永仁县| 当阳市| 吴堡县| 铁岭市| 揭东县| 博乐市| 宣恩县| 钟祥市| 闸北区| 茶陵县| 钟山县|