在Java中每个线程都属于某个线程组(ThreadGroup)。例如,如果在main()中产生一个线程,则这个线程属于main线程组管理的一员,您可以使用下面的指令来获得目前线程所属的线程组名称:
Thread.currentThread().getThreadGroup().getName();
一个线程产生时,都会被归入某个线程组,视线程是在哪个线程组中产生而定。如果没有指定,则归入产生该子线程的线程组中。您也可以自行指定线程组,线程一旦归入某个组,就无法更换组。
java.lang.ThreadGroup类正如其名,可以统一管理整个线程组中的线程,您可以使用以下方式来产生线程组,而且一并指定其线程组:
ThreadGroup threadGroup1 = new ThreadGroup("group1");
ThreadGroup threadGroup2 = new ThreadGroup("group2");
Thread thread1 =
new Thread(threadGroup1, "group1's member");
Thread thread2 =
new Thread(threadGroup2, "group2's member");
ThreadGroup中的某些方法,可以对所有的线程产生作用,例如interrupt()方法可以interrupt线程组中所有的线程,setMaxPriority()方法可以设置线程组中线程所能拥有的最高优先权(本来就拥有更高优先权的线程不受影响)。
如果您想要一次获得线程组中所有的线程来进行某种操作,可以使用enumerate()方法,例如:
Thread[] threads = new Thread[threadGroup1.activeCount()];
threadGroup1.enumerate(threads);
ThreadGroup中有一个uncaughtException()方法。当线程组中某个线程发生Unchecked exception异常时,由执行环境调用此方法进行相关处理,如果有必要,您可以重新定义此方法,直接使用范例15.9来示范如何实现。
范例15.9 ThreadGroupDemo.java
package onlyfun.caterpillar;
import java.io.*;
public class ThreadGroupDemo {
public static void main(String[] args) {
ThreadGroup threadGroup1 =
// 这是匿名类写法
new ThreadGroup("group1") {
// 继承ThreadGroup并重新定义以下方法
// 在线程成员抛出unchecked exception
// 会执行此方法
public void uncaughtException(Thread t, Throwable e) {
System.out.println(t.getName() + ": "
+ e.getMessage());
}
};
// 这是匿名类写法
Thread thread1 =
// 这个线程是threadGroup1的一员
new Thread(threadGroup1,
new Runnable() {
public void run() {
// 抛出unchecked异常
throw new RuntimeException("测试异常");
}
});
thread1.start();
}
}
在uncaughtException()方法的参数中,第一个参数可以获得发生异常的线程实例,而第二个参数可以获得异常对象,范例中显示了线程的名称及异常信息,结果如下所示:
分享到:
相关推荐
该文档总结了Java多线程相关的知识点,分享给大家,简单易懂!
Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java...
Java 线程系列博文总结word化,编目如下,欢迎互相学习交流: Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:...
corejava多线程学习总结.pdfcorejava多线程学习总结.pdfcorejava多线程学习总结.pdfcorejava多线程学习总结.pdfcorejava多线程学习总结.pdfcorejava多线程学习总结.pdfcorejava多线程学习总结.pdfcorejava多线程学习...
Java中的多线程学习总结Java中的多线程学习总结
详细的讲述了多线程的各种用法 Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 ...Java线程:大总结
JAVA多线程与并发学习总结.pdf
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
JAVA多线程(精典总结) 面试 大全 java
主要是结合课本和视频学习了一下java多线程的用法,这个专利适合于初学者学习多线程知识。
这是本人在学习Java 多线程时的总结归纳以及代码,希望对下载的同学有帮助!
java多线程编程大总结:Java 线程是 Java 语言中一个非常重要的部分,Java5 之前,多线程的语言支持还是比较弱的, 内容也较少,写一个复杂的多线程程序是相当有挑战性的。 在Java5 以后,Java 对多线程做了很多...
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
java多线程总结
java多线程学习-ftp上传
Java多线程是一块重要的内容,李兴华讲解的Java是一个很好的资源
JAVA多线程学习,提高JAVA性能,多线程并列. JAVA高级学习内容。
java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题
Java多线程的重要性可想而知,而对于多线程,某些情况下,又比较难理解,稍微参照网上的资料进行了总结
很多人学习完JavaSE/JavaEE之后想往更深入的技术进行探索,比如对大数据、分布式、高并发类的专题进行攻克时,立即遇到针对java.lang包中线程类的学习,但线程类的学习并不像JDBC一样简单,学习曲线陡峭,多弯路与...