本文转自http://www.cnblogs.com/linjiqin/p/3210004.html 感谢作者

守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。

Daemon的作用是为其他线程的运行提供服务,比如说GC线程。其实User Thread线程和Daemon Thread守护线程本质上来说去没啥区别的,唯一的区别之处就在虚拟机的离开:如果User Thread全部撤离,那么Daemon Thread也就没啥线程好服务的了,所以虚拟机也就退出了。

守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。

setDaemon方法的详细说明:
public final void setDaemon(boolean on):将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java虚拟机退出。

该方法必须在启动线程前调用。

该方法首先调用该线程的checkAccess方法,且不带任何参数。这可能抛出SecurityException(在当前线程中)。

参数: 
on - 如果为 true,则将该线程标记为守护线程。 
抛出: 
IllegalThreadStateException - 如果该线程处于活动状态。 
SecurityException - 如果当前线程无法修改该线程。 
另请参见: 
isDaemon(), checkAccess()

package cn.thread;

/**
* 线程的调度(守护线程)
*
* @author 林计钦
* @version 1.0 2013-7-24 上午09:30:42
*/
public class ThreadDaemon { public static void main(String[] args) {
ThreadDaemon thread=new ThreadDaemon();
Thread t1 = thread.new MyThread1();
Thread t2 = new Thread(thread.new MyRunnable());
t2.setDaemon(true); //设置为守护线程 t2.start();
t1.start();
} class MyThread1 extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("线程1第" + i + "次执行!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} class MyRunnable implements Runnable {
public void run() {
for (long i = 0; i < 9999999L; i++) {
System.out.println("后台线程第" + i + "次执行!");
try {
Thread.sleep(7);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
后台线程第0次执行!
线程1第0次执行!
后台线程第1次执行!
后台线程第2次执行!
后台线程第3次执行!
后台线程第4次执行!
后台线程第5次执行!
后台线程第6次执行!
后台线程第7次执行!
后台线程第8次执行!
后台线程第9次执行!
后台线程第10次执行!
后台线程第11次执行!
后台线程第12次执行!
线程1第1次执行!
后台线程第13次执行!
后台线程第14次执行!
后台线程第15次执行!
后台线程第16次执行!
后台线程第17次执行!
后台线程第18次执行!
后台线程第19次执行!
后台线程第20次执行!
后台线程第21次执行!
后台线程第22次执行!
后台线程第23次执行!
后台线程第24次执行!
后台线程第25次执行!
线程1第2次执行!
后台线程第26次执行!
后台线程第27次执行!
后台线程第28次执行!
后台线程第29次执行!
后台线程第30次执行!
后台线程第31次执行!
后台线程第32次执行!
后台线程第33次执行!
后台线程第34次执行!
后台线程第35次执行!
后台线程第36次执行!
后台线程第37次执行!
后台线程第38次执行!
线程1第3次执行!
后台线程第39次执行!
后台线程第40次执行!
后台线程第41次执行!
后台线程第42次执行!
后台线程第43次执行!
后台线程第44次执行!
后台线程第45次执行!
后台线程第46次执行!
后台线程第47次执行!
后台线程第48次执行!
后台线程第49次执行!
后台线程第50次执行!
后台线程第51次执行!
线程1第4次执行!
后台线程第52次执行!
后台线程第53次执行!
后台线程第54次执行!
后台线程第55次执行!
后台线程第56次执行!
后台线程第57次执行!
后台线程第58次执行!
后台线程第59次执行!
后台线程第60次执行!
后台线程第61次执行!
后台线程第62次执行!
后台线程第63次执行!
后台线程第64次执行!
后台线程第65次执行!
后台线程第66次执行!
后台线程第67次执行!
后台线程第68次执行!
后台线程第69次执行!
后台线程第70次执行!

Java多线程-线程的调度(守护线程)的更多相关文章

  1. Python线程:线程的调度-守护线程

    Python线程:线程的调度-守护线程   守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程.在python中建议使用的是thread. ...

  2. (Java多线程系列五)守护线程

    守护线程 什么是守护线程 Java中有两种线程,一种是用户线程,一种是守护线程. 当进程不存在或主线程停止,守护线程也会自动停止. class DaemonThread extends Thread ...

  3. Java中的守护线程和非守护线程(转载)

    <什么是守护线程,什么是非守护线程> Java有两种Thread:"守护线程Daemon"(守护线程)与"用户线程User"(非守护线程). 用户线 ...

  4. Java多线程系列--“基础篇”10之 线程优先级和守护线程

    概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例 转载请注明出处:http://www.cnblogs.com/skyw ...

  5. Java 多线程基础(十一)线程优先级和守护线程

    Java 多线程基础(十一)线程优先级和守护线程 一.线程优先级 Java 提供了一个线程调度器来监控程序启动后进去就绪状态的所有线程.线程调度器通过线程的优先级来决定调度哪些线程执行.一般来说,Ja ...

  6. Java多线程(十)——线程优先级和守护线程

    一.线程优先级的介绍 java 中的线程优先级的范围是1-10,默认的优先级是5.“高优先级线程”会优先于“低优先级线程”执行. java 中有两种线程:用户线程和守护线程.可以通过isDaemon( ...

  7. java 多线程系列基础篇(十)之线程优先级和守护线程

    1. 线程优先级的介绍 java 中的线程优先级的范围是1-10,默认的优先级是5.“高优先级线程”会优先于“低优先级线程”执行. java 中有两种线程:用户线程和守护线程.可以通过isDaemon ...

  8. Java多线程系列 基础篇03 线程的优先级和守护线程

    1. 线程优先级 现代操作系统中基本上使用时间分片的方式调度线程,通过设置线程优先级,使优先级高的线程获得时间片的次数多于优先级低的线程. 在java 线程中,通过一个整形变量prority来控制优先 ...

  9. java 多线程之 线程优先级和守护线程

    线程优先级的介绍 java 中的线程优先级的范围是1-10,默认的优先级是5."高优先级线程"会优先于"低优先级线程"执行. java 中有两种线程:用户线程和 ...

随机推荐

  1. Google Volley: How to send a POST request with Json data?

    sonObjectRequest actuallyaccepts JSONObject as body. From http://arnab.ch/blog/2013/08/asynchronous- ...

  2. js数组排序

    在JS中,sort方法可用于数组的排序:先来看一个例子: var arr = [1, 2, 3, 5, 7, 78, 8, 89]; arr.sort(); console.log(arr); // ...

  3. Kibana4学习<三>

    discover 功能 Discover 标签页用于交互式探索你的数据.你可以访问到匹配得上你选择的索引模式的每个索引的每条记录.你可以提交搜索请求,过滤搜索结果,然后查看文档数据.你还可以看到匹配搜 ...

  4. Log4j2 配置笔记(Eclipse+maven+SpringMVC)

    Log4j2相关介绍可以百度看下,这里只注重配置Log4j2 能够马上跑起来: 1.pom.xml文件中添加Log4j2的相关Maven配置信息 <!-- log4j2 --> <d ...

  5. GitHub教程--上传项目四步法 GitBash命令行下使用方法

    之前就用过GitHub,感觉用GitHub托管自己的代码非常不错.可是之前用的都是窗口化的TortoiseGit,省了很多命令行的操作,但是个人非常喜欢使用命令行,于是,今天就试着用了用GitBash ...

  6. 关于myeclipse代码提示的一些问题

    默认是  .xxx  输入点提示,要写注释 @xxx的时候怎么输入@后面有代码提示呢? Auto activation delay 是代码提示出现的速度  下面一行是出现代码提示的条件 我们在.后面加 ...

  7. html公用库

    <script src="http://lib.sinaapp.com/js/jquery/1.6/jquery.min.js" language="javascr ...

  8. Orchard 候补神器说明

    Orchard学习视频已登录百度传课: http://www.chuanke.com/3027295-124882.html 获取Orchard候补神器请加qq群432158140  ! 候补神器是一 ...

  9. 2014ACM/ICPC亚洲区广州站 北大命题

    http://acm.hdu.edu.cn/showproblem.php?pid=5131 现场赛第一个题,水题.题意:给水浒英雄排序,按照杀人数大到小,相同按照名字字典序小到大.输出.然后对每个查 ...

  10. Sprite Kit 入门教程

    Sprite Kit 入门教程  Ray Wenderlich on September 30, 2013 Tweet 这篇文章还可以在这里找到 英语, 日语 If you're new here, ...