java守护线程
2014-04-16 13:35
225 查看
守护线程就是标记为守护(daemon)的线程,也就是简单的调用下setDaemon()方法。
我依然用代码说明一切,下面看代码
Thread t = new Thread(); t.setDaemon(true);//标记为守护线程守护线程用于后台支持任务,典型的用例是垃圾回收或者监视资源动态。守护线程将以全新的方式终止,它并不是想普通线程那样执行完自己的任务之后消亡,而是当JVM检测剩下的线程只有守护线程时也就是说普通线程已经消亡的情况下JVM就会推出,守护线程也就消亡了。守护线程提供了一种管理某些后台处理的理想方法,它们只是在支持其他非守护线程时才需要。
我依然用代码说明一切,下面看代码
public class DaemonThread implements Runnable{ public void run(){ System.out.println("entering run()"); try{ System.out.println("in run() - currentThread() = " + Thread.currentThread()); while(true){ try{ Thread.sleep(500); }catch(InterruptedException x){ } System.out.println("in run() - woke up again"); } }finally{ System.out.println("leaving run()"); } } }
public class DaemonThreadMain { public static void main(String[] args){ System.out.println("entering main"); Thread t = new Thread(new DaemonThread()); t.setDaemon(true);//设置守护线程 t.start(); //让main()线程睡眠一段时间,好让t线程可以运行 try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("leaving main()"); } }运行结果:
entering main //JVM创建main线程 entering run() //main线程睡眠,t线程进入run方法运行 in run() - currentThread() = Thread[Thread-0,5,main] in run() - woke up again in run() - woke up again in run() - woke up again in run() - woke up again in run() - woke up again in run() - woke up again leaving main() //主线程睡醒,主线程结束, //JVM忽略守护程然后退出代码中被标记为守护线程的run方法里面是一个死循环,如果此线程是普通线程,则JVM将始终不会退出,因为有线程在运行,而上述代码中把此线程标记为守护线程,根据守护线程的定义可以退出JVM在当程序中非守护线程(本例中也就是main线程)运行结束之后,自动结束守护线程,退出JVM。
相关文章推荐
- Java中守护线程的总结
- java的守护线程与非守护线程
- 黑马程序员_Java基础_线程间通信,生产者消费者案例,jdk1.5锁机制,守护线程
- java 守护线程
- Java中守护线程的总结
- 十分钟快速了解Java守护线程
- Java中守护线程的总结
- Java线程:线程的调度-守护线程
- java开发之线程(守护线程daemon和用户线程User Thread)
- java多线程之守护线程Daemon()和Join()介绍
- JAVA 并发编程之守护线程的创建与运行
- Java中的守护线程 & 非守护线程(简介)
- Java中守护线程的总结
- java的守护线程与非守护线程
- Java线程之守护线程(Daemon)收藏
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
- java的Daemon守护线程
- java的守护线程与非守护线程
- java学习11--线程创建的两种方式,生命周期以及守护线程
- java守护线程见解