91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java ThreadGroup的作用及方法有哪

發布時間:2021-10-12 10:07:13 來源:億速云 閱讀:251 作者:iii 欄目:開發技術

這篇文章主要講解了“java ThreadGroup的作用及方法有哪”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java ThreadGroup的作用及方法有哪”吧!

目錄
  • java ThreadGroup的作用及方法

    • Field

    • 私有構造方法

    • 公共構造方法

    • 公共方法

    • 特殊的一個方法

  • java 線程組(ThreadGroup類)

    java ThreadGroup的作用及方法

    ThreadGroup線程組,java對這個類的描述呢就是

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

    允許線程訪問關于其線程組的信息,但不允許訪問關于其線程組的父線程組或任何其他線程組的信息。”

    ThreadGroup并不是算是標注容器,因為,最后你會發現這個家伙是沒有public的 add,remove方法的。那怎么把線程放到線程組里面呢?

    答案是 在new Thread(參數),將ThreadGroup當做參數傳進去。

    Field

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

    私有構造方法

    創建不在任何線程組中的空線程組。

    此方法用于創建系統線程組。

    private ThreadGroup()

    公共構造方法

    //創建一個新線程組。這個新組的父線程組是指定的線程組parent。線程組的 名字 就是name
    會對 parent 調用checkAccess() 確定當前運行的線程是否具有修改此線程組的權限(比如 設置setDaemon)。有可能會拋出SecurityException異常
    public ThreadGroup(ThreadGroup parent, String name)
    //構造一個新線程組。這個新組的父線程組是當前運行線程的線程組。 就是調用上面的方法
    public ThreadGroup(String name) {
        this(Thread.currentThread().getThreadGroup(), name);
    }

    公共方法

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

    特殊的一個方法

    public void uncaughtException(Thread t, Throwable e)

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

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

    那么,在上面自定義的Throwable 會被這個捕獲,如果沒有設置,就打印標注錯誤流。對這個方法,存在的意義 比較困惑

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

    運行結果

    java ThreadGroup的作用及方法有哪

    java 線程組(ThreadGroup類)

    線程組表示一個線程的集合。線程組也可以包含其他線程組。線程執行完就會被回收。

    private static void methodA() {
        MyThread my = new MyThread() ;
            
        //創建線程類對象
            
        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
            
        //所有的線程它默認的線程組名稱:main(主線程),主線程是包含在線程組里面的
        System.out.println(Thread.currentThread().getThreadGroup().getName());//main
    }
    private static void methodB() {
           //public ThreadGroup(String name)構造一個新線程組
        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());
    }

    感謝各位的閱讀,以上就是“java ThreadGroup的作用及方法有哪”的內容了,經過本文的學習后,相信大家對java ThreadGroup的作用及方法有哪這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    闽清县| 汶上县| 海盐县| 莎车县| 唐山市| 闽侯县| 汉沽区| 安新县| 塔城市| 张家界市| 乐平市| 吐鲁番市| 虞城县| 宜兰县| 句容市| 梅州市| 石阡县| 昂仁县| 平阳县| 宁阳县| 社旗县| 蒙阴县| 罗江县| 阜平县| 吉林省| 伊金霍洛旗| 铜川市| 德格县| 桃江县| 平果县| 平湖市| 五大连池市| 杭锦后旗| 海淀区| 南陵县| 清河县| 申扎县| 巩义市| 都兰县| 阳朔县| 新营市|