博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Java多线程编程核心技术》读后感(十六)
阅读量:4625 次
发布时间:2019-06-09

本文共 3847 字,大约阅读时间需要 12 分钟。

 

 

线程组

线程组的作用是,可以批量的管理线程或线程组对象,有效地对线程或线程组对象进行组织

线程对象关联线程组:1级关联

package Seven;public class ThreadA  extends Thread {    @Override    public void run() {        try {            while (!Thread.currentThread().isInterrupted()) {                System.out.println("ThreadName=" + Thread.currentThread().getName());                Thread.sleep(3000);            }        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
package Seven;public class ThreadB extends Thread {    @Override    public void run() {        try {            while (!Thread.currentThread().isInterrupted()) {                System.out.println("ThreadName=" + Thread.currentThread().getName());                Thread.sleep(3000);            }        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
package Seven;public class Run {    public static void main(String[] args) {        ThreadA aRunnable = new ThreadA();        ThreadB bRunnable = new ThreadB();        ThreadGroup group = new ThreadGroup("高洪岩的线程组");        Thread aThread = new Thread(group, aRunnable);        Thread bThread = new Thread(group, bRunnable);        aThread.start();        bThread.start();        System.out.println("活动的线程数为:" + group.activeCount());        System.out.println("线程组的名称为:" + group.getName());    }}

 

 线程对象关联线程组:多级关联

package Seven;public class Run {    public static void main(String[] args) {        // 在main组中添加一个线程组A,然后在这个A组中添加线程对象Z        // 方法activeGroupCount()和activeCount()的值不是固定的        // 是系统中环境的一个快照        ThreadGroup mainGroup = Thread.currentThread().getThreadGroup();        ThreadGroup group = new ThreadGroup(mainGroup, "A");        Runnable runnable = new Runnable() {            @Override            public void run() {                try {                    System.out.println("runMethod!");                    Thread.sleep(10000);// 线程必须在运行状态才可以受组管理                } catch (InterruptedException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        };        Thread newThread = new Thread(group, runnable);        newThread.setName("Z");        newThread.start();// 线程必须启动然后才归到组A中        // ///        ThreadGroup[] listGroup = new ThreadGroup[Thread.currentThread()                .getThreadGroup().activeGroupCount()];        Thread.currentThread().getThreadGroup().enumerate(listGroup);        System.out.println("main线程中有多少个子线程组:" + listGroup.length + " 名字为:"                + listGroup[0].getName());        Thread[] listThread = new Thread[listGroup[0].activeCount()];        listGroup[0].enumerate(listThread);        System.out.println(listThread[0].getName());    }}

线程组自动归属特性

自动归属就是自动归到当前线程组中

package Seven;public class Run {    public static void main(String[] args) {        System.out.println("A处线程:"+Thread.currentThread().getName()                + " 所属的线程组名为:"                + Thread.currentThread().getThreadGroup().getName()+ " "                + " 中有线程组数量:"+Thread.currentThread().getThreadGroup().activeGroupCount());        ThreadGroup group=new ThreadGroup("新的组");        System.out.println("B处线程:"+Thread.currentThread().getName()                + " 所属的线程组名为:"                + Thread.currentThread().getThreadGroup().getName()+ " "                +" 中有线程组数量:"+Thread.currentThread().getThreadGroup().activeGroupCount());        ThreadGroup[] threadGroup=new ThreadGroup[Thread.currentThread().getThreadGroup().activeGroupCount()];        Thread.currentThread().getThreadGroup().enumerate(threadGroup);        for (int i = 0; i < threadGroup.length; i++) {            System.out.println("第一个线程组名称为:"+threadGroup[i].getName());        }    }}

 

未完,待续。。。

 

转载于:https://www.cnblogs.com/Michael2397/p/7860234.html

你可能感兴趣的文章
Neutron SDN 手动实现手册
查看>>
linux下core文件调试方法
查看>>
20个创意404错误页面设计的启示
查看>>
基础训练 芯片测试
查看>>
如何用命令将本地项目上传到git
查看>>
JavaScript 实现鼠标拖动元素
查看>>
js 模糊查询 (360接口)
查看>>
python+rabbitMQ实现生产者和消费者模式
查看>>
“模态”对话框和“后退”按钮
查看>>
关于javascript实现的网站页面侧边悬浮框"抖动"问题
查看>>
linux_命令格式和命令提示符
查看>>
Cocos2d-X-3.0之后的版本的环境搭建
查看>>
when case group by 的用法集合
查看>>
洛谷P1908 逆序对
查看>>
转义符
查看>>
poj 1019
查看>>
asp.net mvc上传文件
查看>>
bitmq集群高可用测试
查看>>
主成分分析(PCA)原理详解
查看>>
短信验证接口网址
查看>>