zoukankan      html  css  js  c++  java
  • java核心学习(二十五) 多线程---线程组和未处理的异常

    一、java对线程组的支持  

      Java使用ThreadGroup类来代表线程组,对线程组的控制相当于同时控制这组线程。

      在使用Thread的构造方法创建线程时可以指定线程组,Thread类提供了指定线程组的重载构造器,但在创建完成之后就不能改变线程的线程组。若不显示传入一个ThreadGroup对象作为构造器参数,则默认子线程与父线程同组。

      Thread类中有一个实例方法getThreadGroup()来返回线程的线程组对象。

      ThreadGroup类的构造器:ThreadGroup(String name) 、ThreadGroup(ThreadGroup parent , String name)。

      ThreadGroup中提供的方法:

        int activeCount():返回此线程组内活动线程的数目

        interrupt():中断此线程组

        isDaemon():判断是否为后台线程组

        setDaemon(boolean  daemon):设置为后台线程组

        setMaxPriority(int pri):设置最高优先级

    二、线程的未处理异常

      从java5开始,若一个线程在执行过程中抛出一个异常并且未处理,JVM在结束该线程之前会查找是否有对应的Thread.UncaughtExceptionHandler对象,若能够找到该对象,就调用该对象的uncaughtException(Thread t , Throwable e)方法来处理该异常。

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

       static setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler handler):为该类的所有实例线程设置未处理异常的处理器。

           setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler handler):为单一线程设置处理器。

      ThreadGroup类实现了Thread.UncaughtExceptionHandler对象,所以每个线程所述的线程组会成为默认的异常处理器。JVM处理线程抛出的未处理异常的机制是:首先查找该异常对应的异常处理器,即调用setXXXXXXXXXXX方法设置的Thread.UncaughtExceptionHandler对象,若没找到,则调用线程组提供的uncaughtException()来处理。

  • 相关阅读:
    createpipe
    JavaScript中的JSON(非原创一)
    Delphi资源文件的应用(转)
    PowerDesigner15对SQL2005反向工程问题.
    readonly(C# 参考)
    SQL SERVER 2005 数据挖掘与商业智能完全解决方案学习笔记(四)
    什么是Actor?
    ORACLE自增长字段实现(转)
    SQL SERVER 2005 数据挖掘与商业智能完全解决方案学习笔记(二)
    J2EE框架(TomcatStrutsHibernateSpringAjax(dojo))开发步骤:
  • 原文地址:https://www.cnblogs.com/Theshy/p/7592895.html
Copyright © 2011-2022 走看看