Java 使用 ThreadGroup 来表示线程组,它可以对一批线程进行分类管理。
默认情况下,子线程和创建它的父线程处于同一个线程组内。
一旦某个线程加入指定线程组,该线程将一直属于该线程组,直到该线程死亡。
Thread 类提供了如下几个构造器来设置新创建的线程属于哪个线程组。
ThreadGroup 提供了如下两个简单的构造器来创建实例。
ThreadGroup 类提供了如下几个常用方法来操作整个线程组里的所有线程
Thread 类提供了如下两个方法来设置异常处理器。
ThreadGroup 类实现了Thread.UncaughtExceptionHandler 接口,所以每个线程所示的线程组将会作为默认的异常处理器。当一个线程抛出未处理异常时,JVM 会首先查找该异常对应的异常处理器,如果找到该异常处理器,则调用该异常处理器处理异常;否则,JVM 将会调用该线程所属的线程组对象 uncaughtException() 方法来处理该异常。
线程组处理异常的默认流程如下:
下面程序为主线程设置了异常处理器,当主线程运行抛出未处理异常时,该异常处理器将会起作用。