java守护线程的理解
- package daemonThread;
- /*setDaemon(true)方法将线程设置为守护线程,线程的Daemon默认值为false
- * 只要当前JVM实例中存在任何一个非守护线程没有结束,守护线程就在工作
- * 当进程中不存在非守护线程,则守护线程随着JVM一同结束
- * GC(垃圾回收器)就是一个守护线程
- * 本例中main线程虽然先结束,但是testThread线程还在工作,所以只有当testThread线程也结束,才停止打印i */
- class MyThread extends Thread{
- private int i = 0;
- @Override
- public void run(){
- super.run();
- try{
- while(true){
- i++;
- System.out.println("i="+i);
- Thread.sleep(1000);
- }
- }catch(InterruptedException ie){
- ie.printStackTrace();
- }
- }
- }
- class testThread extends Thread{
- @Override
- public void run(){
- try{
- Thread.sleep(10000); //testThread线程约10秒后结束
- System.out.println(Thread.currentThread().getName()+"线程结束!");
- }catch(InterruptedException ie){
- ie.printStackTrace();
- }
- }
- }
- public class Run {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- try{
- MyThread thread = new MyThread();
- thread.setName("thread");
- thread.setDaemon(true); //将thread线程设为守护线程
- thread.start();
- testThread t = new testThread();
- t.setName("testThread");
- t.start();
- Thread.sleep(5000); //main线程在这里停留5秒
- System.out.println("主线程结束了");//5秒后main线程结束了,但是testThread线程还在执行,所以守护线程继续工作
- /*当所有线程都结束时,thread线程也随之结束*/
- }catch(InterruptedException ie){
- ie.printStackTrace();
- }
- }
- }
运行结果如下图

java守护线程的理解的更多相关文章
- JAVA 对守护线程的理解
1.在start之前,setDaemon. 该现场就成为守护线程了. 2.守护现线程并不是主线程结束,子线程(守护线程)也跟着结束.而是守护线程在没有用户线程运行的情况伴随着JVM退出而结束. 示例代 ...
- Python多线程的创建,相关函数和守护线程的理解
一:多线程的创建 threading库创建线程有两种方式,函数式和继承式 1)函数式 def func(): print 'Starting' print 'Ending' t=threadin ...
- java 守护线程整理
java中finally语句不走的可能存在system.exit(0)与守护线程 线程sleep采用TimeUnit类 设定线程的名字thread.getcurrentThread().setName ...
- 从 JVM 视角看看 Java 守护线程
Java 多线程系列第 7 篇. 这篇我们来讲讲线程的另一个特性:守护线程 or 用户线程? 我们先来看看 Thread.setDaemon() 方法的注释,如下所示. Marks this thre ...
- Java守护线程
最近的项目使用的是dubbo.Web工程发布在Tomcat上,会作为消费者调用其他的dubbo微服务.但是最近发现一个问题,在使用shutdown命令关闭tomcat的时候,Tomcat并没有真正关闭 ...
- 白话JAVA守护线程
OneCoder(苦逼Coder)原创,转载请务必注明出处: http://www.coderli.com/archives/daemon-thread-plain-words/ 关于“白话”:偶然想 ...
- 转:JAVA守护线程
原文地址:https://www.cnblogs.com/wxgblogs/p/5417503.html 详细内容看原文~ ,写的挺好的 在Java中有两类线程:User Thread(用户线程). ...
- Java 守护线程概述
原文出处: 朱小厮 Java的线程分为两种:User Thread(用户线程).DaemonThread(守护线程). 只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最 ...
- JAVA - 守护线程(Daemon Thread)
转载自:http://www.cnblogs.com/luochengor/archive/2011/08/11/2134818.html 在Java中有两类线程:用户线程 (User Thread) ...
随机推荐
- windows下安装Composer
1.下载https://getcomposer.org/composer.phar 2.复制到php.exe所在目录 3.在php.exe所在目录新建composer.bat文件 4.打开cmd,跳转 ...
- WebService 不依赖配置文件直接在构造函数配置地址
研究了下 ClientBase(Binding binding, EndpointAddress remoteAddress) 这个重载更好用,都不用填名称比如 new PAS.WebService. ...
- SQL 用户定义表类型,在存储过程里使用表类型,表参数作参数
.定义表类型SUTDENTTYPE,包含三个字段,分别对应学生表的NAME,SEX和PHONE.之所以如此创建,我是准备在插入新学生数据的存储过程中,以它为参数. GO CREATE TYPE S ...
- maven 使用国内代理
一直使用 maven默认仓库,maven 的下载速度一直不快不慢:最近换了网络,maven秒变蜗牛,换了阿里云的镜像,瞬间飞快. 配置文件 ${USER_HOME}/.m2/settings.xml: ...
- psoame
首先,感谢那些无私分享知识的人,没有你们我无法前行.我非常热爱开源,目前在学习CPP(Tue Jun 28 CST 2016).最大的梦想是为开源项目贡献代码和看到别人使用我写的软件.自学就像是和自己 ...
- 解决duplicate symbols for architecture x86_64错误
duplicate symbols for architecture x86_64 两个不第三方SDK之间的文件里面内容重复了,类似 file.h+file.m 和 CHfile.h+CHfile.m ...
- sharedPreferences的用法
做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连 接跟操作等耗时大大影响了程序的效率,因此我们使用键值这 ...
- Python基础语法(二)
类中的方法定义前如果有 @staticmethod 则此方法通过类名调用,如:dict.fromkeys() : 如果没有,则此方法通过对象调用 三元运算 name=值1 if 条件 else 值2 ...
- JavaScript的学习3
一.数组 1.定义数组格式:var 变量名 = [数组元素1,数组元素2] 2.遍历数组元素: 格式: var arr = []; for(var i=0;i<数组长度;i++){ arr[i] ...
- Spring Boot快速开发Web项目
我们以前使用Spring框架的时候,需要首先在pom文件中增加对相关的的依赖,然后新建Spring相关的xml文件,而且往往那些xml文件还不会少.然后继续使用tomcat或者jetty作为容器来运行 ...