全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java多线程的其他知识_动力节点Java学院整理

一、线程组

 /** 
 * A thread group represents a set of threads. In addition, a thread 
 * group can also include other thread groups. The thread groups form 
 * a tree in which every thread group except the initial thread group 
 * has a parent. 
 * <p> 
 * A thread is allowed to access information about its own thread 
 * group, but not to access information about its thread group's 
 * parent thread group or any other thread groups. 
 * 
 * @author unascribed 
 * @version 1.66, 03/13/08 
 * @since  JDK1.0 
 */ 

一个线程组代表了一系列的线程。并且,一个线程组可以包括其他的线程组。除了初始线程组外,每个线程组都有一个父线程组,类似于树的结构。

一个线程可以访问它所在线程组的信息, 不可以访问它父线程组和其他线程组的信息。

 从这段话中可以大概明白线程组的概念,所有的线程和线程组构成一个树的结构,如下:

 

查看Thread的API,可以看到,创建一个线程可以指定它的线程组和不指定线程组。如果指定其所属的线程组,那么该线程组是创建它的线程所属线程组的子线程组。如果不指定线程组,则属于默认情况,该线程和创建它的线程在同一个线程组。

以上面的图举个简单的例子:

如果main线程创建了Thread1线程,没有指定Thread1所在的线程组,那么Thread1就默认和main线程属于同一个线程组,即系统线程组。

如果main线程创建了Thread3线程,没指定Thread3所在的线程组为线程组1,那么线程组1就属于系统线程组,和main线程在树结构中平级。

一旦某个线程加入了指定线程组之后,该线程将一直属于该线程组,直到该线程死亡,线程运行中途不能改变它所属的线程组。因为指定线程所在线程组是在创建线程的视乎完成的,所以之后不能再修改它所在的线程组。

下面是ThreadGroup的方法摘要

二、线程组与未处理的异常

从JDK1.5开始,Java加强了线程的异常处理,如果线程执行过程中抛出了一个未处理的异常,JVM在结束该线程之前会自动查找是否有对应的Thread.UncaughtExceptionHandler对象,如果找到该处理器对象,将会调用该对象的uncaughtException(Thread t,Throwable e)方法来处理该异常。

Thread.UncaughtExceptionHandler是Thread类的一个内部公共静态接口,该接口内只有一个方法:

void uncaughtException(Thread t,Throwable t),该方法中的t代表出现异常的线程,而e代表该线程抛出的异常。

Thread类提供了两个方法来设置异常处理器:

public static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler eh)

线程类的所有线程实例设置默认的异常处理器

public void setUncaughtExceptionHandler(UncaughtExceptionHandler eh)

为指定线程的实例设置异常处理器

ThreadGroup类实现了Thread.UncaughtExceptionHandler接口,所以每个线程所属的线程组将会作为默认的异常处理器。当一个线程抛出未处理的异常时,JVM会首先查找该异常对应的异常处理器(setUncaughtExceptionHandler方法设置的异常处理器),如果找到该异常处理器,将调用该异常处理器处理该异常,否则,JVM将会调用该线程所属的线程组对象的uncaughtException方法来处理该异常,线程组处理异常的流程如下:

1)、如果该线程组有父线程组,则调用父线程组的uncaughtException方法来处理该异常

2)、否则,如果该线程实例所属的线程类有默认的异常处理器(由setDefaultUncaughtExceptionHandler方法设置的异常处理器),那么就调用该异常处理器来处理该异常

3)、否则,将异常调试栈的信息打印到System.err错误输出流,并结束该线程。

看下面的例子:

 class MyHandler implements Thread.UncaughtExceptionHandler{ 
   @Override 
   public void uncaughtException(Thread t, Throwable e) { 
     System.out.println("出现了异常"); 
     e.printStackTrace(); 
   } 
 } 
 public class Test{ 
   public static void main(String[] args) { 
     Thread.currentThread().setUncaughtExceptionHandler(new MyHandler()); 
     int a=1/0; 
   } 
 } 

在主线程中设置了异常处理器,最后捕获了异常。

以上所述是小编给大家介绍的Java多线程的其他知识_动力节点Java学院整理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# java多线程知识  # java多线程入门知识及示例程序  # 将会  # 方法来  # 抛出  # 中平  # 未处理  # 小编  # 是在  # 都有  # 在此  # 不可以  # 其他的  # 给大家  # 可以看到  # 只有一个  # 类似于  # 能再  # 所述  # 创建一个  # 给我留言  # 多线程 


相关文章: C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  如何正确下载安装西数主机建站助手?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何零成本快速生成个人自助网站?  建站之星导航配置指南:自助建站与SEO优化全解析  如何通过二级域名建站提升品牌影响力?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何选择高效便捷的WAP商城建站系统?  C#如何使用XPathNavigator高效查询XML  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  C++时间戳转换成日期时间的步骤和示例代码  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  如何构建满足综合性能需求的优质建站方案?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  ,sp开头的版面叫什么?  ,购物网站怎么盈利呢?  linux top下的 minerd 木马清除方法  如何高效搭建专业期货交易平台网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  深圳网站制作培训,深圳哪些招聘网站比较好?  浅谈Javascript中的Label语句  如何用腾讯建站主机快速创建免费网站?  怀化网站制作公司,怀化新生儿上户网上办理流程?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  如何在香港免费服务器上快速搭建网站?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何快速辨别茅台真假?关键步骤解析  如何在IIS中新建站点并配置端口与物理路径?  如何批量查询域名的建站时间记录?  如何将凡科建站内容保存为本地文件?  建站VPS推荐:2025年高性能服务器配置指南  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  ,想在网上投简历,哪几个网站比较好?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  建站DNS解析失败?如何正确配置域名服务器?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  建站主机与虚拟主机有何区别?如何选择最优方案?  C#怎么使用委托和事件 C# delegate与event编程方法  网站制作说明怎么写,简述网页设计的流程并说明原因?  如何在景安云服务器上绑定域名并配置虚拟主机?  山东网站制作公司有哪些,山东大源集团官网? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。