1. 程式人生 > >線程組學習筆記

線程組學習筆記

測試 java sta 線程 args 案例 fin demo run

A:線程組概述
* Java中使用ThreadGroup來表示線程組,它可以對一批線程進行分類管理,Java允許程序直接對線程組進行控制。
* 默認情況下,所有的線程都屬於主線程組。
    * public final ThreadGroup getThreadGroup()//通過線程對象獲取他所屬於的組
    * public final String getName()//通過線程組對象獲取他組的名字
* 我們也可以給線程設置分組
    * 1,ThreadGroup(String name) 創建線程組對象並給其賦值名字
    * 2,創建線程對象
    * 3,Thread(ThreadGroup?group, Runnable?target, String?name) 
    * 4,設置整組的優先級或者守護線程

B:案例演示

    * 線程組的使用,默認是主線程組
  • MyRunnable mr = new MyRunnable();
    Thread t1 = new Thread(mr, "張三");
    Thread t2 = new Thread(mr, "李四");
    //獲取線程組
    // 線程類裏面的方法:public final ThreadGroup getThreadGroup()
    ThreadGroup tg1 = t1.getThreadGroup();
    ThreadGroup tg2 = t2.getThreadGroup();
    // 線程組裏面的方法:public final String getName()
    String name1 = tg1.getName();
    String name2 = tg2.getName();
    System.out.println(name1);
    System.out.println(name2);
    // 通過結果我們知道了:線程默認情況下屬於main線程組
    // 通過下面的測試,你應該能夠看到,默任情況下,所有的線程都屬於同一個組
    System.out.println(Thread.currentThread().getThreadGroup().getName());
    • 自己設定線程組
  • // ThreadGroup(String name)
    ThreadGroup tg = new ThreadGroup("這是一個新的組");
    
    MyRunnable mr = new MyRunnable();
    // Thread(ThreadGroup group, Runnable target, String name)
    Thread t1 = new Thread(tg, mr, "張三");
    Thread t2 = new Thread(tg, mr, "李四");
    
    System.out.println(t1.getThreadGroup().getName());
    System.out.println(t2.getThreadGroup().getName());
    
    //通過組名稱設置後臺線程,表示該組的線程都是後臺線程
    tg.setDaemon(true);
    
    `
    
    `
    
    /**
     * @param args
     * ThreadGroup
     */
    public static void main(String[] args) {
        //demo1();
        ThreadGroup tg = new ThreadGroup("我是一個新的線程組");      //創建新的線程組
        MyRunnable mr = new MyRunnable();                       //創建Runnable的子類對象
    
        Thread t1 = new Thread(tg, mr, "張三");                   //將線程t1放在組中
        Thread t2 = new Thread(tg, mr, "李四");                   //將線程t2放在組中
    
        System.out.println(t1.getThreadGroup().getName());      //獲取組名
        System.out.println(t2.getThreadGroup().getName());
    
        tg.setDaemon(true);
    }
    
    public static void demo1() {
        MyRunnable mr = new MyRunnable();
        Thread t1 = new Thread(mr, "張三");
        Thread t2 = new Thread(mr, "李四");
    
        ThreadGroup tg1 = t1.getThreadGroup();
        ThreadGroup tg2 = t2.getThreadGroup();
    
        System.out.println(tg1.getName());              //默認的是主線程
        System.out.println(tg2.getName());
    }

}

class MyRunnable implements Runnable {

@Override
public void run() {
    for(int i = 0; i < 1000; i++) {
        System.out.println(Thread.currentThread().getName() + "...." + i);
    }
}

線程組學習筆記