守护线程与非守护线程

所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。

守护线程和用户线程的没啥本质的区别:唯一的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。 因为没有了被守护者,守护线程也就没有工作可做了,也就没有继续运行程序的必要了。

将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。在使用守护线程时需要注意一下几点:

(1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。

(2) 在Daemon线程中产生的新线程也是Daemon的。

(3) 守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。

编程一个timer:(timer就是一个守护线程)

public class MyTask extends TimerTask{ @Override public void run() {

System.out.println("任务执行了,时间为:"+new Date());

}

public class Test1 {public static void main(String[] args){

System.out.println("当前时间:"+new Date());

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.SECOND,10);

Date date=calendar.getTime();

MyTask task=new MyTask();

Timer timer=new Timer();

timer.schedule(task,date);

}}

守护线程中产生的线程也是守护线程

Java的守护线程Daemon相关推荐

  1. JAVA - 守护线程(Daemon Thread)

    转载自:http://www.cnblogs.com/luochengor/archive/2011/08/11/2134818.html 在Java中有两类线程:用户线程 (User Thread) ...

  2. Java 的守护线程是什么情况?

    前言 本文隶属于专栏<100个问题搞定Java并发>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见100个问题搞定Java并发 ...

  3. Java的守护线程和非守护线程

    一.守护线程 java分为两种线程:用户线程和守护线程 守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分.因此 ...

  4. Python编程基础:第五十九节 守护线程Daemon Threading

    第五十九节 守护线程Daemon Threading 前言 实践 前言 守护线程是在后台运行的线程,对程序的运行并不重要,你的程序在退出前不会等待守护线程的完成,此类线程的特点是,当程序中主线程及所有 ...

  5. java的守护线程与非守护线程

    守护线程最典型的应用就是GC,它是一个很好的守护者. 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程) ...

  6. 线程自动退出_什么是Java的守护线程?

    守护线程是一种支持性线程,主要用于后台调度以及支持性的工作.守护线程具备自动结束生命周期的特性,而非守护线程则不具备.如果对上面的概念一知半解的话,我们先来看一个简单的例子,明白守护线程的执行情况: ...

  7. java中什么是守护线程_什么是Java的守护线程?

    欢迎大家搜索"小猴子的技术笔记"关注我的公众号,有问题可以及时和我交流. 守护线程是一种支持性线程,主要用于后台调度以及支持性的工作.守护线程具备自动结束生命周期的特性,而非守护线 ...

  8. 守护线程Daemon的理解

    1.守护线程伴随着主线程的销毁而销毁: 2.jvm虚拟机中有很多守护线程,随着main函数的结束而结束,自动回收栈中的内容. Thread t1 = new Thread(){@Overridepub ...

  9. 守护线程daemon

    一.守护线程 线程分为用户线程和守护线程 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕 如,后台记录操作日志,监控内存垃圾回收等待- 二.测试 package com.massimo ...

最新文章

  1. gvim在windows下中文乱码的终极解决方案
  2. 两个date 相差得到月份_DATE和TIME函数的正确打开方式
  3. c++Builder XE6 MD5 加密算法 BASE64 URL 编码
  4. Java Maven和Gradle构建的主题缓存
  5. 费诺编码c语言实验报告,formal parameter 4 different from declaration
  6. 华盛顿大学研发PaperID技术,可在纸上印刷RFID电子标签
  7. Open vSwitch实践——VLAN
  8. Elastic Search 查询语法大全
  9. vue的json格式化工具json-viewer
  10. plc编程有哪些方法?
  11. 高级Bash脚本编程指南 在线收藏版
  12. Xshell官网登陆及软件下载,以及百度网盘免费提速
  13. Unrecognized Windows Sockets error: 10106: create解决方案
  14. 鸿蒙系统如何开启快捷方式,鸿蒙系统功能介绍-华为鸿蒙系统功能详细介绍 - 系统家园...
  15. 解决 av_read_frame() 文件尾(end of file)
  16. Linux利用filename=${fileuser:-filename}设置文档名
  17. 一文带你了解 Flink Forward 柏林站全部重点内容
  18. 攻防世界逆向高手题之dmd-50
  19. 研究人员利用黑猩猩改进动物模拟技术 效果显著!
  20. 【科普】基础教程系列之装系统篇

热门文章

  1. ffmpeg基本知识
  2. 【转】自学成才秘籍!机器学习深度学习经典资料汇总
  3. 重装系统后删除Cygwin的安装文件
  4. mysql用navicat无法远程连接,mysql 发现 navicat 可以远程连接,代码无法远程连接
  5. html层重叠,HTML/CSS相关问题 z-Index层重叠顺序
  6. sca标准值_(整理)B超数据标准值.
  7. eclipse32位python版下载_python之(3)Python Eclipse+PyDec下载和安装教程(超级详细)...
  8. python批量删除_Python批量删除只保留最近几天table的代码实例
  9. 游戏迷必备桌面|穿越火线壁纸,燃动少年心
  10. 潮流海报模板|2021渐变流体必备