日期:2011-03-22 16:16:00 来源:本站整理
Daemon线程[Java编程]
本文“Daemon线程[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
“Daemon”线程的作用是在程序的运行期间于后台供应一种“通例”服务,但它并不属于程序的一个基本部份.因此,一旦全部非Daemon线程完成,程序也会中止运行.相反,假如有任何非Daemon线程仍在运行(比方还有一个正在运行main()的线程),则程序的运行不会中止.
通过调用isDaemon(),可调查一个线程是不是一个Daemon,并且能用setDaemon()翻开大概关闭一个线程的Daemon状况.假如是一个Daemon线程,那么它成立的任何线程也会自动具有Daemon属性.
下面这个例子演示了Daemon线程的用法:
Daemon线程可将自己的Daemon标志设置成“真”,然后产生一系列其他线程,并且认为它们也具有Daemon属性.随后,它进入一个无限循环,在此中调用yield(),放弃对其他进程的掌握.在这个程序早期的一个版本中,无限循环会使int计数器增值,但会使整个程序都好象陷入停顿状况.换用yield()后,却可以使程序充满“朝气”,不会令人产生阻滞或反映愚钝的感受.//: Daemons.java // Daemonic behavior import java.io.*; class Daemon extends Thread { private static final int SIZE = 10; private Thread[] t = new Thread[SIZE]; public Daemon() { setDaemon(true); start(); } public void run() { for(int i = 0; i < SIZE; i++) t[i] = new DaemonSpawn(i); for(int i = 0; i < SIZE; i++) System.out.println( "t[" + i + "].isDaemon() = " + t[i].isDaemon()); while(true) yield(); } } class DaemonSpawn extends Thread { public DaemonSpawn(int i) { System.out.println( "DaemonSpawn " + i + " started"); start(); } public void run() { while(true) yield(); } } public class Daemons { public static void main(String[] args) { Thread d = new Daemon(); System.out.println( "d.isDaemon() = " + d.isDaemon()); // Allow the daemon threads to finish // their startup processes: BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Waiting for CR"); try { stdin.readLine(); } catch(IOException e) {} } } ///:~
一旦main()完成自己的工作,便没有什么能禁止程序中止运行,因为这里运行的只有Daemon线程.所以能看到启动全部Daemon线程后显示出来的后果,System.in也举行了呼应的设置,使程序中止前能等候一个回车.假如不举行这样的设置,就只能看到成立Daemon线程的一部份后果(试试将readLine()代码换成差别长度的sleep()调用,看看会有什么表现).
以上是“Daemon线程[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:java资源访谒的错误办法
- ·下一篇文章:java制作多个线程
- ·中查找“Daemon线程”更多相关内容
- ·中查找“Daemon线程”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论