美文网首页
Java线程组

Java线程组

作者: 黎繁介 | 来源:发表于2018-06-10 15:42 被阅读16次

            多线程中,为了方便管理一批线程,我们使用ThreadGroup来表示线程组,通过它对一批线程进行分类管理 。(默认情况下,A线程创建的线程B,B线程是属于A线程的线程组的。)


    Thread类提供几个构造器来创建新的线程属于哪个线程组:

            Thread(ThreadGroup group,Runnable target):以target的run()方法为线程执行提创建新线程,新线程属于线程组group。

            Thread(ThreadGroup group,Runnable target,String name):以target的run()方法为线程执行提创建新线程,并且输入group线程组,新线程名字为name。

            Thread(ThreadGroup,String name):创建新线程,属于group线程组,新线程名字为name。

    ThreadGroup类的简单构造器以及几个常用方法:

            ThreadGroup(String name):创建名为name的新线程组。

            ThreadGroup(ThreadGroup parent,String name):创建指定父线程组,名为name的新线程组。

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

            interrupt():中断此线程组中所有的线程。

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

            setDaemon(boolean daemon):设置线程组为后台线程(当后台线程组中最后一个线程执行完成活着最后一个线程被销毁,后台线程将自动销毁)。

            setMaxPriority(int prio):设置线程组的最高优先级。


    我们来用简单的代码例子说明下:

    线程测试类:

    测试线程组:

    运行结果:

    注意:不要把后台线程组和后台线程(守护线程)混为一谈,后台线程组的特性是最后一个线程执行完或最后一个线程被销毁时,后台线程组自动销毁,线程组只是为了统一管理线程的一个方式!



    通过线程组处理异常

            ThreadGroup类中定义了一个 void uncaughtException(Thread t, Throwable e) 方法(t代表抛出异常的线程,e代表抛出的异常),该方法处理此线程组里所有线程抛出的未处理的异常。

    代码说明:

    定义一个线程:

    我们来重写下线程组中的void uncaughtException(Thread t, Throwable e)方法:

    运行:

            我们知道通常捕获抛出的异常都是用try…catch来实现的,但是多线程中,捕获抛出的异常机制都是一样的,于是每个线程我们都这样写一遍的话便大大增长了代码的臃肿,用线程组统一处理,方便我们统一处理!


    -------------上一节“Java-使用管道流实现线程通信”---------------

    -------------下一节“Java-Callable和Future”-----------------------

    相关文章

      网友评论

          本文标题:Java线程组

          本文链接:https://www.haomeiwen.com/subject/ygmfeftx.html