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()来处理。

  • 相关阅读:
    打造基于CentOS7的xfce最简工作环境
    Linux下C程序的编辑,编译和运行以及调试
    修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
    TabControl 显示彩色的图示 (XE6 Firemonkey)
    TSwitch 中文简繁显示支持(XE6 Android)
    改变 TMemo 的背景颜色 (Firemonkey)
    修正 XE5 Android 键盘三个问题
    Delphi 收藏
    展示 Popup 的使用方法
    ListView 下拉更新 (支持 Android)
  • 原文地址:https://www.cnblogs.com/Theshy/p/7592895.html
Copyright © 2011-2022 走看看