java线程组 线程池_JAVA多线程(三)-----线程组、线程池和线程相关类
一、線程組和未處理的異常
Thread類提供了如下幾個構造器來設置新創建的線程屬于哪個線程組:
Thread(ThreadGroup group,Runnable target):以target的run()方法作為線程執行體創建新線程,屬于group線程組
Thread(ThreadGroup group,Runnable target,String Name):以target的run()方法作為線程執行體創建新線程,屬于group線程組,線程名為name
Thread(ThreadGroup group,String Name):創建新線程,線程名為name,屬于group數組
中途不可改變線程所屬線程組
ThreadGroup類提供了如下兩個簡單的構造器來創建實例:
ThreadGroup(String name):以指定的線程組名字來創建新的線程組
ThreadGroup(ThreadGroup parent,String name):以指定的線程組名字,父線程組來創建新的線程組
public class MyThread extendsThread{//提供指定線程名的構造器
publicMyThread(String name) {super(name);
}//提供指定線程名、線程組的構造器
publicMyThread(ThreadGroup group, String name) {super(group,name);
}public voidrun() {for(int i = 0; i < 20; i++) {
System.out.println(getName()+ " 線程的i變量" +i);
}
}public static voidmain(String[] args) {//獲取主線程所在的線程組,這是所有線程默認的線程組
ThreadGroup mainGroup =Thread.currentThread().getThreadGroup();
System.out.println("主線程組的名字:" +mainGroup.getName());
System.out.println("主線程組是否是后臺線程組" +mainGroup.isDaemon());new MyThread("主線程的線程").start();
ThreadGroup tg= new ThreadGroup("新線程組");
tg.setDaemon(true);
System.out.println("tg線程組是否是后臺線程組" +tg.isDaemon());
MyThread tt= new MyThread(tg,"tg組的線程甲");
tt.start();new MyThread(tg,"tg組的線程乙").start();
}
}
ThreadGroup內還定義了一個很有用的方法,用于處理該線程組內的任意線程所拋出的未處理異常
void uncaughtException(Thread t,Throwable e)
如果線程執行過程中拋出了一個未處理異常,JVM在結束線程之前會自動查找是否有對應的Thread.UncaughtExceptionHandler對象,并調用該對象的uncaughtException(Thread t,Throwable e)方法來處理該異常
class MyExHandler implementsThread.UncaughtExceptionHandler{public voiduncaughtException(Thread t,Throwable e) {
System.out.println(t+ "線程出現了異?!?#xff1a;" +e);
}
}public classExHandler {public static voidmain(String[] args) {
Thread.currentThread().setUncaughtExceptionHandler(newMyExHandler());int a = 5/0;
System.out.println("程序正常結束!");
}
}
二、線程池
三、線程相關類
總結
以上是生活随笔為你收集整理的java线程组 线程池_JAVA多线程(三)-----线程组、线程池和线程相关类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 接收soap_(七)发送、接收
- 下一篇: java面试32问_学员分享:JAVA面