Java线程组操作实例分析
本文实例讲述了Java线程组操作。分享给大家供大家参考,具体如下:
一点睛
1Java使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
2一旦某个线程加入了指定线程组之后,该线程将一直属于该线程组,直到该线程死亡,线程运行中途不能改变它所属的线程组。
3Thread类提供了如下几个构造器来设置新创建的线程属于哪个线程组:
Thread(ThreadGroupgroup,Runnabletarget):以target的run方法作为线程执行体创建新线程,属于group线程组。
Thread(ThreadGroupgroup,Runnabletarget,Stringname):以target的run方法作为线程执行体创建新线程,该线程属于group线程组,且线程名为name。
Thread(ThreadGroupgroup,Stringname):创建新线程,新线程名为name,属于group线程组。
4Thread类没有提供setThreadGroup的方法来改变线程所属的线程组,但提供了一个getThreadGroup()方法来返回该线程所属的线程组,getThreadGroup()方法的返回值是ThreadGroup对象,表示一个线程组。
5ThreadGroup类有如下两个简单的构造器来创建实例。
ThreadGroup(Stringname):以指定线程组名字来创建新的线程组。
ThreadGroup(ThreadGroupparent,Stringname):以指定的名字、指定的父线程组创建一个新线程组。
二实战
1代码
classMyThreadextendsThread { //提供指定线程名的构造器 publicMyThread(Stringname) { super(name); } //提供指定线程名、线程组的构造器 publicMyThread(ThreadGroupgroup,Stringname) { super(group,name); } publicvoidrun() { for(inti=0;i<3;i++) { System.out.println(getName()+"线程的i变量"+i); } } } publicclassThreadGroupTest { publicstaticvoidmain(String[]args) { //获取主线程所在的线程组,这是所有线程默认的线程组 ThreadGroupmainGroup=Thread.currentThread().getThreadGroup(); System.out.println("主线程组的名字:" +mainGroup.getName()); System.out.println("主线程组是否是后台线程组:" +mainGroup.isDaemon()); newMyThread("主线程组的线程").start(); ThreadGrouptg=newThreadGroup("新线程组"); tg.setDaemon(true); System.out.println("tg线程组是否是后台线程组:" +tg.isDaemon()); MyThreadtt=newMyThread(tg,"tg组的线程甲"); tt.start(); newMyThread(tg,"tg组的线程乙").start(); } }
2运行
主线程组的名字:main
主线程组是否是后台线程组:false
tg线程组是否是后台线程组:true
主线程组的线程线程的i变量0
tg组的线程甲线程的i变量0
tg组的线程甲线程的i变量1
主线程组的线程线程的i变量1
tg组的线程乙线程的i变量0
tg组的线程乙线程的i变量1
tg组的线程乙线程的i变量2
主线程组的线程线程的i变量2
tg组的线程甲线程的i变量2
3说明
首先获取主线程所属的线程组,并访问该线程组的相关属性,接着创建一个新线程组,并将该线程组设置为后台线程组。
更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。