- 浏览: 991922 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (394)
- OSGI (14)
- 多线程 (10)
- 数据库 (30)
- J2ME (1)
- JAVA基础知识 (46)
- 引用包 (1)
- 设计模式 (7)
- 工作流 (2)
- Ubuntu (7)
- 搜索引擎 (6)
- QT (2)
- Ubuntu下编程 (1)
- 小程序 (2)
- UML (1)
- Servlet (10)
- spring (16)
- IM (12)
- 文档视频转为flash格式在线播放 (19)
- Maven (8)
- 远程调用 (2)
- PHPRPC (1)
- EXTJS学习 (2)
- Hibernate (16)
- 技术文章 (38)
- flex (5)
- 海量数据处理 (5)
- FTP (8)
- JS (10)
- Struts (1)
- hibernate search (13)
- JQuery (2)
- EMail (3)
- 算法 (4)
- SVN (7)
- JFreeChart (4)
- 面试 (4)
- 正规表达式 (2)
- 数据库性能优化 (10)
- JVM (6)
- Http Session Cookie (7)
- 网络 (12)
- Hadoop (2)
- 性能 (1)
最新评论
-
hy1235366:
能够随便也发一下,你退火算法程序使用的DistanceMatr ...
模拟退火算法总结(含例子)(转) -
梅强强:
感谢分享。。帮大忙了
swftools转换文件时线程堵塞问题的解决方法 -
wenlongsust:
openoffice和文件不在同一个服务器上,用过吗?
[JODConverter]word转pdf心得分享(转) -
2047699523:
如何在java Web项目中开发WebService接口htt ...
利用Java编写简单的WebService实例 -
abingpow:
唉,看起来好像很详细很不错的样子,可惜不是篇面向初学者的文章, ...
Spring与OSGi的整合(二)(转)
package chenwenbiao.test; import java.io.IOException; /* * 守护线程在没有用户线程可服务时自动离开 * 在Java中比较特殊的线程是被称为守护(Daemon)线程的低级别线程。 * 这个线程具有最低的优先级,用于为系统中的其它对象和线程提供服务。 * 将一个用户线程设置为守护线程的方式是在线程对象创建之前调用线程对象的setDaemon方法。 * 典型的守护线程例子是JVM中的系统资源自动回收线程, * 我们所熟悉的Java垃圾回收线程就是一个典型的守护线程, * 当我们的程序中不再有任何运行中的Thread, * 程序就不会再产生垃圾,垃圾回收器也就无事可做, * 所以当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。 * 它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。 * 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 * 也就是说守护线程不依赖于终端,但是依赖于系统,与系统“同生共死”。 * 那Java的守护线程是什么样子的呢。 * 当JVM中所有的线程都是守护线程的时候,JVM就可以退出了; * 如果还有一个或以上的非守护线程则JVM不会退出。 */ public class testThread extends Thread { public testThread() { } /** *//** * 线程的run方法,它将和其他线程同时运行 */ public void run(){ for(int i = 1; i <= 100; i++){ try{ Thread.sleep(100); } catch (InterruptedException ex){ ex.printStackTrace(); } System.out.println(i); } } public static void main(String [] args){ testThread test = new testThread(); test.setDaemon(true); test.start(); /** * 在start之后再设置为守护线程的话,就会抛出如下异常: * Exception in thread "main" java.lang.IllegalThreadStateException at java.lang.Thread.setDaemon(Unknown Source) at chenwenbiao.test.testThread.main(testThread.java:42) 但线程是正常工作的,只是不是守护线程 */ // test.setDaemon(true); System.out.println("isDaemon = " + test.isDaemon()); try { System.in.read(); // 接受输入,使程序在此停顿,一旦接收到用户输入,main线程结束,守护线程自动结束,如果用户不输入东西,那么程序会一直从1输出到100,之后才算完了,但主进程还没结束;而当我们在运行这个程序时输入一个回车,那全部线程都结束了,包括主线程都退出 } catch (IOException ex) { ex.printStackTrace(); } } }
java设置守护线程。只要Thread.setDeamon(true)就可以了。只能在创建的时候设置!运行之后再setDeamon(true)则会报异常IllegalThreadStateException
不过一直没有了解守护线程和非守护线程有什么区别!一直属于烂(非滥)用- -
守护线程一听 就是“单相思”!~ 守护主线程! 主线程一旦退出,守护线程不管现在在做什么都要伴随着主线程的退出而退出。 就像以前皇帝一样,皇帝挂了,其他人都要陪葬!! 所以守护程序的退出,可能不是十分优美。因为守护线程可能执行了一半中途强行挂掉。
而非守护线程就不一样了!~主线程依赖于非守护线程。主线程不会主动强制退出,如果非守护线程还在运行中。(当然不包括线程显示的强制退出如:System.exit(0);这种情况属于程序被动退出)
当程序中只存在守护线程时,意味着JVM退出,即程序停止运行了。当且仅当有一个非守护线程,JVM就不会主动退出!
一旦,一个线程设置为守护线程之后, 其该线程创建的子线程也隐式的设置为守护线程
这是本人的一点理解,有疑义或者补充请提出!3Q~
评论
2 楼
hz_chenwenbiao
2012-07-25
守护进程,根据名字也知道它是起守护的作用,就是辅助系统干点事,代码也给出了JVM的垃圾回收线程就是守护线程,守护线程可以根据垃圾回收线程的低优先级运行,在系统退出时,它就结束等特性来理解守护线程。
1 楼
Wen_JN_86
2012-07-19
我是初学者,不太明白守护进程有什么用,主线程可以不需要守护线程独立的运行,而且主线程退出的话守护线程也会退出,那么守护线程的作用是什么呢?
发表评论
-
Java线程(二):线程同步synchronized和volatile(转)
2014-03-17 00:09 868转载自:http://blog.csdn.net/ghsau ... -
浅谈Java多线程的同步问题(l转)
2014-03-17 00:07 902非常好的使用线程同步的文章 转载自http://www.c ... -
JVM的垃圾回收机制详解和调优(转)
2013-06-20 10:31 7041.JVM的gc概述 gc即垃圾 ... -
深入探讨 Java 类加载器(转)
2013-06-20 10:17 861转载自:http://www.ibm.com/develop ... -
java反射详解(推荐转)
2013-05-15 10:42 869载自:http://www.cnblogs.com/roll ... -
java静态方法、非静态代码块{}、静态代码块static{}(转)
2012-07-13 14:33 1464转自:http://www.cn-java.com/www1/ ... -
error 与 Exception区别(转)
2012-07-13 14:31 1067Error类和Exception类都继承自Throwab ... -
java面试题有哪些常见的(转)
2012-07-13 14:30 1186第一,谈谈final, finally, finaliz ... -
java Math.round()(转)
2012-07-11 14:17 1169public class MathTest { ... -
Java异常的分类(转)
2012-07-11 08:57 1030转载自:http://blog.csdn.net/ilibab ... -
java 内联函数(转)
2012-06-28 23:40 1811以前用过C++,知道它 ... -
堆栈,堆栈,堆和栈的区别(转)
2011-05-08 00:36 1175不防看看这篇文章:http://www.cppblog.com ... -
第二十章 指针 二 为指针分配和释放空间(转)
2011-05-08 00:10 1475载自<白话c++>:http://17de.com ... -
数据结构中各种时间复杂度(转)
2011-05-06 09:58 2781(1)冒泡排序 冒泡排序就是把小的元素往 ... -
C#之int挑战Java之Integer(转)
2011-04-28 14:24 1324可能有些图会看不到,可以到转载处去阅读:http://kb.c ... -
Java: 堆 & 栈(转)
2011-04-28 14:16 1374栈是运行时的单位,而堆是存储的单位。栈解决程序的运行问题,即程 ... -
native2ascii 使用方法 及 Java字符编码(转)
2011-04-18 01:17 2702在做Java开发的时候,常 ... -
Unicode,ISO-8859,GBK,UTF-8编码及相互转换(java)(转)
2011-04-18 01:15 68621、函数介绍在Java中,字符串用统一的Unicode编码 ... -
GBK与UTF-8 转换乱码详解(转)
2011-04-18 01:07 3432getBytes 的功能是将字符转换成字节数组, gbk. ... -
Java TreeMap的简单实现(转)
2011-04-18 00:29 1086TreeMap的实现与二叉搜索树显示,其对应的节点格式为 E ...
相关推荐
java daemon 程序,有助于理解守护线程的概念和使用
精灵线程(Daemon)或守护线程---马克-to-win java视频
Java 的守护线程什么是Java的守护线程( Daemon Thread )?守护线程的区别?守护线程的作用?守护线程如何创建?守护线程如何判断?守护线程使用的注意事项总结 什么是Java的守护线程( Daemon Thread )? Java 提供...
主要介绍了Java线程之守护线程(Daemon)用法,较为详细的分析了守护线程的功能与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 作用 Daemon的作用是为其他线程的运行提供便利服务,守护线程典型的应用是 GC (垃圾回收器),它是一个很称职的守护者。 区别 ...
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 。下面通过本文给大家分享java守护线程实例详解,需要的朋友参考下吧
java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。任 何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(boolon);true 则把该线程设置为守护线程,反之则为用户线程。 Thread....
多线程基本概念 创建线程的方式 线程的生命周期及控制 线程的优先级及调度 多线程的互斥与同步 守护线程 (Daemon) 线程组 (ThreadGroup)
守护线程Daemon;线程池;一个死锁的例子; 定时器Timer:包括在指定时间执行任务,在指定时间之后执行任务以及在某个时间之后每隔时间段重复执行的任务; 9 Java GUI 日历:使用swing和awt实现一个图形化的日历可以...
daemon thread 守护线程,如果守护线程之外的线程都结束了。守护线程也会结束,并强行终止整个程序。不要在守护进程中进行资源相关操作。会导致资源不能正确的释放。在非守护进程中使用Event。 Thread 类 (group=...
Java虚拟机的生命周期一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。...Java中的线程分为两种:守护线程(daemon)和普通线程(non-daemon)。守护线程是Java虚拟机自己使用的线程,比如负
9 守护线程Daemon 8. 10 线程池 8. 11 一个死锁的例子 8. 12 定时器Timer 第9章 Java GUI 9. 1 日历 9. 2 开窗户游戏 9. 3 标准型计算器 9. 4 更改组件的外观 9. 5 自定义...
1 2.1有关线程你必须知道的事 3 2.3volatile与Java内存模型(JMM) 2 2.2初始线程:线程的基本操作 4 2.4分门别类的管理:线程组 2java并行程序基础 5 2.5驻守后台:守护线程(Daemon) 6 2.6先做重要的事:线程...
①守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。 ②这是我在公司用的...
多线程复习,欢迎大家Star 包名和内容对应如下: ...no9_daemon_thread 守护线程实例 no10_threadgroup 线程组 no11_thread_catch_exception 指定异常捕获类捕获线程中的异常 no12_producter_consumer_wait_no
ProcessKeepingAlive 保活策略:前台通知;Daemon守护线程,提高线程优先级;微信的保活方案:双Service强制前台进程保活。提高进程的优先级;前后台Service;前台一像素的Activity;厂商推送渠道等