- 浏览: 3502988 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
java多线程中,有一种特殊的线程叫做守护线程,关键词是Deamon。
我们在平时的书上都有介绍过,但是很少有用代码来讲的。我们往往记住的是:
守护线程是一般是用于辅助的,提供一些后台处理的理想方法,他们只是在支持其他非守护线程的时候才是需要的。
理解的深一点的,可以这么讲,守护线程的生命是和mian关联在一起的,如果man方法用完了,主线程死掉了,那么
守护线程就会陪着去送命,也会死掉的。而如果不是守护线程的话是不会这样的。
下面我们来看下代码的吧:
首先创建一个线程.守护线程并不是在创建线程的时候指定的,这其实和设定线程的名字是一样的,要再线程开始的去指定的。
package endual; public class Daemon extends Thread{ public void run () { System.out.println("entering run()"); try { System.out.println("in run() - currentThread()=" + Thread.currentThread()); while (true) { try { Thread.sleep(500) ; } catch (Exception e) { // TODO: handle exception } System.out.println("in run()-- woke up again"); } } catch (Exception e) { // TODO: handle exception }finally{ System.out.println("leanving run()"); } } }
main的测试类(这个时候,不是守护线程)
package endual; public class MainApp { /** * 标记为守护的线程将以全新的方式终止。守护线程用于后台的支持任务,而且仅仅在普通的,非守护线程 * 仍然需要运行的时候才需要的。当VM检测仅仅剩下一个守护线程的时候,就会退出的。如果非守护线程仍然还 * 存活着,VM就不会退出的,守护线程提供了一种管理某些后台处理的理想的方法,他们只是在支持其他非守护线程 * 时才需要的 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("enter main()"); Daemon de = new Daemon() ; //de.setDaemon(true) ; //设置成为了daemon线程,设置成为守护线程 de.start() ; try { Thread.sleep(3000) ; } catch (Exception e) { // TODO: handle exception } System.out.println("leaving main(0"); } }
结果是:
enter main() entering 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 leaving main(0 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 in run()-- woke up again in run()-- woke up again in run()-- woke up again
当main方法用完以后也就是主线线程死掉了以后,这个线程还是在运行中的。
-----------------------------------------------------------------------------------设定守护线程
而如果将线程设定为守护线程的话,情况就不一样的
package endual; public class MainApp { /** * 标记为守护的线程将以全新的方式终止。守护线程用于后台的支持任务,而且仅仅在普通的,非守护线程 * 仍然需要运行的时候才需要的。当VM检测仅仅剩下一个守护线程的时候,就会退出的。如果非守护线程仍然还 * 存活着,VM就不会退出的,守护线程提供了一种管理某些后台处理的理想的方法,他们只是在支持其他非守护线程 * 时才需要的 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("enter main()"); Daemon de = new Daemon() ; de.setDaemon(true) ; //设置成为了daemon线程,设置成为守护线程 de.start() ; try { Thread.sleep(3000) ; } catch (Exception e) { // TODO: handle exception } System.out.println("leaving main(0"); } }
测试的结果是
enter main() entering 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 leaving main(0 in run()-- woke up again
结果就是当main方法死掉以后,守护线程马上就死掉了的
发表评论
-
snmp
2020-04-13 11:07 387https://www.iteye.com/blog/zhan ... -
snmp
2020-04-10 21:33 516https://blog.csdn.net/qq_333141 ... -
服务器监控软件
2019-12-31 11:07 463[ERROR] org.hyperic.sigar.Sigar ... -
多数据源
2019-12-23 22:09 405https://gitee.com/baomidou/dyna ... -
mybatis多数据源
2019-12-23 18:09 403https://blog.csdn.net/qq_288042 ... -
springboot ueditor
2019-12-17 18:26 343https://blog.csdn.net/u01216982 ... -
java支持多数据源
2019-12-13 15:59 407spxcms是否支持多数据源 ... -
java日志
2019-12-10 12:01 255https://blog.csdn.net/peng_wei_ ... -
spring 多数据源
2019-12-06 09:55 387https://www.jb51.net/article/10 ... -
idea
2019-12-04 17:13 357https://blog.csdn.net/dengachao ... -
手机大屏
2019-11-30 16:02 296http://demo.demohuo.top/modals/ ... -
quarz配置
2019-11-08 11:48 415https://blog.csdn.net/BryantLmm ... -
mysql同步
2019-11-06 12:20 307https://blog.csdn.net/baidu_418 ... -
nginx配置多个服务
2019-11-04 20:35 707https://blog.csdn.net/everljs/a ... -
h5 加壳
2019-11-04 16:05 576https://jingyan.baidu.com/artic ... -
jeui 前端框架
2019-10-22 14:30 1115http://www.jemui.com/demo/ http ... -
jeui 维护
2019-10-22 14:29 2http://www.jemui.com/demo/ htt ... -
jeui 维护
2019-10-22 14:29 2http://www.jemui.com/demo/ -
jeui 维护
2019-10-22 14:29 2http://www.jemui.com/demo/ -
jeui 维护
2019-10-22 14:29 2http://www.jemui.com/demo/
相关推荐
【IT十八掌徐培成】Java基础第08天-02.多线程-join-daemon-同步.zip
看完《think in java》多线程章节,自己写的多线程文档,还结合了其他的相关网络资料。 线程 一. 线程池 1)为什么要使用线程池 2 2)一个具有线程池的工作队列 3 3)使用线程池的风险: 4 4)有效使用线程池的原则 5...
│ 高并发编程第一阶段12讲、Daemon线程的创建以及使用场景分析.mp4 │ 高并发编程第一阶段13讲、线程ID,优先级讲解.mp4 │ 高并发编程第一阶段14讲、Thread的join方法详细介绍,结合一个典型案例.mp4 │ 高...
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 作用 Daemon的作用是为其他线程的运行提供便利服务,守护线程典型的应用是 GC (垃圾回收器),它是一个很称职的守护者。 区别 ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
│ 高并发编程第一阶段12讲、Daemon线程的创建以及使用场景分析.mp4 │ 高并发编程第一阶段13讲、线程ID,优先级讲解.mp4 │ 高并发编程第一阶段14讲、Thread的join方法详细介绍,结合一个典型案例.mp4 │ 高...
多线程基本概念 创建线程的方式 线程的生命周期及控制 线程的优先级及调度 多线程的互斥与同步 守护线程 (Daemon) 线程组 (ThreadGroup)
解决了多个进程或者线程对共享资源的争夺 Event e.set e.clear e.wait Lock lock.acquire() lock.release() 4. 什么是线程 threading Thread() t.start() t.join() t.name t.getName t.setName t.daemon...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾 14.5.1 过多的线程 14.6 ...
步骤守护程序 Step Daemon(步进式)是用于3d打印机的外部计划程序,该计划... 多线程管道。 双立方床水准仪具有每步精度(相对于每行)。 兼容OctoPrint。 与对Marlin的直接步进块支持一起开发。 适用于Linux(包
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
第1章 Java基础 1.1 转换基本数据类型 1.2 Java的运算符 1.3 控制程序的流程 1.4 计算阶乘 1.5 实现命令行程序 第2章 Java面向对象程序设计 2. 1 复数类 2. 2 equals.chashCode...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
用pyqt5设计了一个主窗体,在窗体运行时需要把一个无限循环放在一个线程去工作。运行后,发现通过鼠标按主窗体的关闭按键关闭主创体后,线程不会自动终止,依然在运行。尽管对我的使用场景来说,这不是问题,因为...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
一个支持多线程的服务器框架,GeneralServer.java; 代理服务器,ProxyServer.java; telnet客户端,访问系统的telnet服务实质上是与telnet服务建立socket连接,默认的telnet服务的端口是23,TelnetClient.java; ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...