1. package daemonThread;
  2. /*setDaemon(true)方法将线程设置为守护线程,线程的Daemon默认值为false
  3. * 只要当前JVM实例中存在任何一个非守护线程没有结束,守护线程就在工作
  4. * 当进程中不存在非守护线程,则守护线程随着JVM一同结束
  5. * GC(垃圾回收器)就是一个守护线程
  6. * 本例中main线程虽然先结束,但是testThread线程还在工作,所以只有当testThread线程也结束,才停止打印i */
  7. class MyThread extends Thread{
  8. private int i = 0;
  9. @Override
  10. public void run(){
  11. super.run();
  12. try{
  13. while(true){
  14. i++;
  15. System.out.println("i="+i);
  16. Thread.sleep(1000);
  17. }
  18. }catch(InterruptedException ie){
  19. ie.printStackTrace();
  20. }
  21. }
  22. }
  23. class testThread extends Thread{
  24. @Override
  25. public void run(){
  26. try{
  27. Thread.sleep(10000); //testThread线程约10秒后结束
  28. System.out.println(Thread.currentThread().getName()+"线程结束!");
  29. }catch(InterruptedException ie){
  30. ie.printStackTrace();
  31. }
  32. }
  33. }
  34. public class Run {
  35. public static void main(String[] args) {
  36. // TODO Auto-generated method stub
  37. try{
  38. MyThread thread = new MyThread();
  39. thread.setName("thread");
  40. thread.setDaemon(true); //将thread线程设为守护线程
  41. thread.start();
  42. testThread t = new testThread();
  43. t.setName("testThread");
  44. t.start();
  45. Thread.sleep(5000);  //main线程在这里停留5秒
  46. System.out.println("主线程结束了");//5秒后main线程结束了,但是testThread线程还在执行,所以守护线程继续工作
  47. /*当所有线程都结束时,thread线程也随之结束*/
  48. }catch(InterruptedException ie){
  49. ie.printStackTrace();
  50. }
  51. }
  52. }

运行结果如下图

java守护线程的理解的更多相关文章

  1. JAVA 对守护线程的理解

    1.在start之前,setDaemon. 该现场就成为守护线程了. 2.守护现线程并不是主线程结束,子线程(守护线程)也跟着结束.而是守护线程在没有用户线程运行的情况伴随着JVM退出而结束. 示例代 ...

  2. Python多线程的创建,相关函数和守护线程的理解

    一:多线程的创建 threading库创建线程有两种方式,函数式和继承式    1)函数式 def func(): print 'Starting' print 'Ending' t=threadin ...

  3. java 守护线程整理

    java中finally语句不走的可能存在system.exit(0)与守护线程 线程sleep采用TimeUnit类 设定线程的名字thread.getcurrentThread().setName ...

  4. 从 JVM 视角看看 Java 守护线程

    Java 多线程系列第 7 篇. 这篇我们来讲讲线程的另一个特性:守护线程 or 用户线程? 我们先来看看 Thread.setDaemon() 方法的注释,如下所示. Marks this thre ...

  5. Java守护线程

    最近的项目使用的是dubbo.Web工程发布在Tomcat上,会作为消费者调用其他的dubbo微服务.但是最近发现一个问题,在使用shutdown命令关闭tomcat的时候,Tomcat并没有真正关闭 ...

  6. 白话JAVA守护线程

    OneCoder(苦逼Coder)原创,转载请务必注明出处: http://www.coderli.com/archives/daemon-thread-plain-words/ 关于“白话”:偶然想 ...

  7. 转:JAVA守护线程

    原文地址:https://www.cnblogs.com/wxgblogs/p/5417503.html 详细内容看原文~  ,写的挺好的 在Java中有两类线程:User Thread(用户线程). ...

  8. Java 守护线程概述

    原文出处: 朱小厮 Java的线程分为两种:User Thread(用户线程).DaemonThread(守护线程). 只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最 ...

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

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

随机推荐

  1. 【转载】Python 描述符简介

    来源:Alex Starostin 链接:www.ibm.com/developerworks/cn/opensource/os-pythondescriptors/ 关于Python@修饰符的文章可 ...

  2. webpack的几个使用方法

    1.gulp.task -> webpack -> webpack.config.js -> bundle.js -> html 2.cmd -> npm run -&g ...

  3. Spring Security 3整合CAS 实现SSO

    spring security 3整合cas client用于实现各Application之间的单点登录. 1. 需要准备的jar spring-security-core-3.0.8.RELEASE ...

  4. Angular中的Ajax

    //我们使用Ajax访问本地或者同域名下的数据或者文件module.controller('InTheatersController',['$scope','$http', function($sco ...

  5. JVM堆内存设置和测试

    1. Java虚拟机内存结构 划分新生代和老年代,这样只在新生代分配内存,从而简化了新对象的分配.另外新生代和老年代使用不同的GC算法,可以更有效的清除不再需要的对象.从上图可以看出,JVM内存由yo ...

  6. wkhtmltopdf乱码解决方案

    在CentOS下使用wkhtmltopdf将html页面转换成pdf的时候对于某些页面可能会出现转换成的pdf中很多字符乱码的情况,更怪异的是直接在命令行下运行一切正常,但在httpd+php下使用却 ...

  7. java 泛型编程学习

    先发布,以后有空再修改... 第一次看到<java核心技术卷一>中关于泛型这部分的时候感觉很复杂,似乎有说不完的约束条件,让人难以理解.当时只是囫囵吞枣般过了一遍,也没有看出个什么来.现在 ...

  8. Laravel 使用多个数据库的问题。

    这几天在使用Laravel 开发一个系统.这个系统连2个数据库.一个名为blog,一个名为center. center 数据库的作用是作为用户中心.可能会有其他几个系统相连,属于公用数据库.主要是用来 ...

  9. Django 之 models的 F() 和 Q() 函数

    前提: app名称为core,models.py 如下: #coding: utf8 import datetime from django.db import models class Order( ...

  10. 爬虫之scrapy框架

    解析 Scrapy解释 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓 ...