- 浏览: 1008052 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 914转载自:http://blog.csdn.net/ghsau ... -
浅谈Java多线程的同步问题(l转)
2014-03-17 00:07 955非常好的使用线程同步的文章 转载自http://www.c ... -
JVM的垃圾回收机制详解和调优(转)
2013-06-20 10:31 7401.JVM的gc概述 gc即垃圾 ... -
深入探讨 Java 类加载器(转)
2013-06-20 10:17 898转载自:http://www.ibm.com/develop ... -
java反射详解(推荐转)
2013-05-15 10:42 903载自:http://www.cnblogs.com/roll ... -
java静态方法、非静态代码块{}、静态代码块static{}(转)
2012-07-13 14:33 1511转自:http://www.cn-java.com/www1/ ... -
error 与 Exception区别(转)
2012-07-13 14:31 1100Error类和Exception类都继承自Throwab ... -
java面试题有哪些常见的(转)
2012-07-13 14:30 1219第一,谈谈final, finally, finaliz ... -
java Math.round()(转)
2012-07-11 14:17 1210public class MathTest { ... -
Java异常的分类(转)
2012-07-11 08:57 1067转载自:http://blog.csdn.net/ilibab ... -
java 内联函数(转)
2012-06-28 23:40 1850以前用过C++,知道它 ... -
堆栈,堆栈,堆和栈的区别(转)
2011-05-08 00:36 1209不防看看这篇文章:http://www.cppblog.com ... -
第二十章 指针 二 为指针分配和释放空间(转)
2011-05-08 00:10 1517载自<白话c++>:http://17de.com ... -
数据结构中各种时间复杂度(转)
2011-05-06 09:58 2812(1)冒泡排序 冒泡排序就是把小的元素往 ... -
C#之int挑战Java之Integer(转)
2011-04-28 14:24 1361可能有些图会看不到,可以到转载处去阅读:http://kb.c ... -
Java: 堆 & 栈(转)
2011-04-28 14:16 1420栈是运行时的单位,而堆是存储的单位。栈解决程序的运行问题,即程 ... -
native2ascii 使用方法 及 Java字符编码(转)
2011-04-18 01:17 2754在做Java开发的时候,常 ... -
Unicode,ISO-8859,GBK,UTF-8编码及相互转换(java)(转)
2011-04-18 01:15 69101、函数介绍在Java中,字符串用统一的Unicode编码 ... -
GBK与UTF-8 转换乱码详解(转)
2011-04-18 01:07 3508getBytes 的功能是将字符转换成字节数组, gbk. ... -
Java TreeMap的简单实现(转)
2011-04-18 00:29 1119TreeMap的实现与二叉搜索树显示,其对应的节点格式为 E ...
相关推荐
java daemon 程序,有助于理解守护线程的概念和使用
精灵线程(Daemon)或守护线程---马克-to-win java视频
Java 的守护线程什么是Java的守护线程( Daemon Thread )?守护线程的区别?守护线程的作用?守护线程如何创建?守护线程如何判断?守护线程使用的注意事项总结 什么是Java的守护线程( Daemon Thread )? Java 提供...
5. 守护线程(Daemon Thread): 守护线程是用于支持应用程序运行的后台线程,比如垃圾回收器就是守护线程。当所有非守护线程结束时,即使还有守护线程在运行,JVM也会退出。我们可以使用`setDaemon(true)`方法将...
5. **守护线程(Daemon)**:守护线程是一种不会阻止程序退出的特殊线程,例如JVM的垃圾收集器就是守护线程。通过`setDaemon(true)`方法将线程设置为守护线程。 6. **线程池**:Java提供`ExecutorService`和`...
在Java中,线程分为两种类型:用户线程(User Thread)和守护线程(Daemon Thread)。这两种线程在大部分行为上是相同的,但它们在决定虚拟机何时退出时有显著差异。 用户线程是程序的主要部分,Java虚拟机(JVM)...
在Java编程语言中,守护线程(Daemon Thread)被称为“变形金刚中的守护神”,这是因为它们在后台默默地工作,为应用程序提供必要的服务,而不会阻止程序的退出。理解并正确使用守护线程是Java多线程编程中的一个...
守护线程(Daemon)是一种不阻止程序退出的线程,如垃圾收集器就是守护线程。当所有非守护线程结束时,程序会终止,即使还有守护线程在运行。 掌握Java的多线程机制对于编写高效、并发友好的应用程序至关重要,它...
Java中的线程可以分为两类,即daemon线程(守护线程)和User线程(用户线程)。守护线程是一种特殊的线程,它们的生命周期并不受主线程的影响,而用户线程则是我们可以看到的线程。 在JVM启动时,main函数所在的...
8. **守护线程(Daemon Thread)** 守护线程不会阻止程序的退出,如JVM的垃圾收集器就是守护线程。可以通过`setDaemon(true)`将线程设置为守护线程。 9. **线程池** Java的`ExecutorService`和`...
Java守护线程与非守护线程详解 Java 中有两类线程:User Thread(用户线程)和 Daemon Thread(守护线程)。用户线程即运行在前台的线程,而守护线程是运行在后台的线程。守护线程的作用是为其他前台线程的运行提供...
守护线程(Daemon Thread)是一种特殊线程,当所有非守护线程结束时,守护线程也会随之结束,通常用于后台服务。 总结: Java多线程编程是提升程序性能和响应性的关键技术。理解多线程的概念,掌握线程的创建、同步...
Java守护线程实例详解 Java中的线程可以分为两类:User Thread(用户线程)和Daemon Thread(守护线程)。在Java中,Daemon Thread是一种特殊的线程,它的主要作用是为其他线程的运行提供便利服务。守护线程的特点...
以下是一个简单的Java守护线程示例: ```java public class Test { public static void main(String[] args) { Thread t1 = new MyCommon(); // 非守护线程 Thread t2 = new Thread(new MyDaemon()); // 守护...
Java中的守护线程(Daemon Thread)是Java虚拟机(JVM)的一种特殊线程类型,它们在后台执行任务,主要用于为应用程序的其他非守护线程提供服务。守护线程的一个典型例子是垃圾回收器(Garbage Collector),它默默...
2.守护线程(Daemon Thread):后台运行的线程,当所有非守护线程结束时,守护线程也会自动结束。 六、线程池 Java提供ExecutorService和ThreadPoolExecutor来管理线程,可以避免频繁创建和销毁线程带来的开销,...
6. **守护线程(Daemon Threads)** 守护线程是一种特殊类型的线程,它不会阻止程序的退出。Java中的`Thread.setDaemon(true)`方法可将线程设置为守护线程。通常,后台服务或日志记录线程可以设置为守护线程。 7. ...
守护线程(Daemon Thread)是一种特殊的线程,当所有非守护线程结束时,程序会自动结束,即使还有守护线程在运行。Java的Thread类的setDaemon()方法可以将线程设置为守护线程。 八、线程池 Java的ExecutorService和...
七、守护线程(Daemon) 守护线程在所有非守护线程结束时自动终止,通常用于后台服务,如垃圾收集器。 通过以上知识点,我们可以更好地理解和运用Java多线程,实现高效、稳定的并发程序。文档“java多线程实例.docx...
Java多线程笔记是 Java 编程语言中关于多线程编程的笔记,涵盖了线程基础知识、线程优先级、线程状态、守护线程、构造线程、线程中断等多方面的内容。 获取简单 main 程序中的线程 在 Java 中,可以使用 ...