線程組學習筆記
阿新 • • 發佈:2018-08-12
測試 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);
}
}
線程組學習筆記