JVM内的守护线程Deamon与用户线程User Thread
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561771.html
一:守护线程Daemon
守护线程:Daemon在希腊神话中解作“守护神”,顾名思义就是一直在JVM后台中运行着,为其他线程(用户线程)服务的。例如:垃圾回收线程GC线程就是守护线程。
守护线程的生命周期:随着程序在JVM中运行,守护线程第一时间被启动,并且一直处于运行态。
当所有用户线程都执行完毕后,程序就会杀死守护线程,离开JVM,终止程序。
二:用户线程转化为守护线程
守护线程可以由用户线程转化而来,成为当前程序的守护线程之一运行到程序退出。
我们可以调用用户线程对象的setDaemon(true)方法来将其转化为守护进程,然后启动它,它将持续运行到程序退出。
在将用户线程转化为守护线程时要注意:
(1) thread.setDaemon(true)必须在thread.start()之前设置,不能把正在运行的用户线程设置为守护线程。
(2) 在Daemon线程中产生的新线程也是Daemon的。
(3) 守护线程不能用来进行JVM中文件、数据库的读写或者进行计算任务,因为当所以用户线程完成后程序会强行杀死所以守护线程,而若在守护线程中进行读写或计算的话有可能因为程序的退出而导致操作不能完成。
JVM内的守护线程Deamon与用户线程User Thread的更多相关文章
- Java用户线程和守护线程
今天看Java一个关于多线程返回值方式的示例,发现一个自己不太能理解的问题,就是在主线程中启动了几个工作线程,主线程中也没有join,工作线程居然也是正常输出了回调的结果.这个跟linux C++下的 ...
- java中线程分两种,守护线程和用户线程。
java中线程分为两种类型:用户线程和守护线程. 通过Thread.setDaemon(false)设置为用户线程: 通过Thread.setDaemon(true)设置为守护线程. 如果不设置次属性 ...
- 【java多线程】用户线程和守护线程的区别
java中线程分为两种类型:用户线程和守护线程.通过Thread.setDaemon(false)设置为用户线程:通过Thread.setDaemon(true)设置为守护线程.如果不设置次属性,默认 ...
- java 用户线程和守护线程
在Java中通常有两种线程:用户线程和守护线程(也被称为服务线程)通过Thread.setDaemon(false)设置为用户线程通过Thread.setDaemon(true)设置为守护线程线程属性 ...
- java高并发系列 - 第9天:用户线程和守护线程
守护线程是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程.JIT线程都是守护线程.与之对应的是用户线程,用户线程可以理解为是系统的工作线程,它会完成这个程序需要完成的业务操作.如果 ...
- 额!Java中用户线程和守护线程区别这么大?
在 Java 语言中线程分为两类:用户线程和守护线程,而二者之间的区别却鲜有人知,所以本文磊哥带你来看二者之间的区别,以及守护线程需要注意的一些事项. 1.默认用户线程 Java 语言中无论是线程还是 ...
- 用户线程&&守护线程
守护线程是为用户线程服务的,当一个程序中的所有用户线程都执行完成之后程序就会结束运行,程序结束运行时不会管守护线程是否正在运行,由此我们可以看出守护线程在 Java 体系中权重是比较低的.当 ...
- 多线程 用户级线程和内核级线程 from C++多核高级编程
转 http://book.51cto.com/art/201006/206946.htm 6.1.1 用户级线程和内核级线程 2010-06-21 20:37 齐宁/董泽惠 译 清华大学出版社 字号 ...
- 深入理解JVM(③)线程与Java的线程
前言 我们都知道,线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源调度(内存地址.文件I/O等),又可以独立调度. 线程的实现 主流的 ...
随机推荐
- HTML5 Geolocation API地理定位整理(二)
Geolocation 实例demo 1.使用watchPosition()监听客户端位置 var watchOne=null; if (navigator.geolocation) { //watc ...
- Apache的三种工作模式
Web服务器Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式. 它们分别是prefork,worker和event,它们同时也代表这Apac ...
- CF 329A(Purification-贪心-非DLX)
A. Purification time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 第二章 BIO与NIO
<netty权威指南>读书笔记 一.BIO 1.服务端程序: package bio; import java.io.BufferedReader; import java.io.IOEx ...
- go语言之进阶篇接口的继承
1.接口的继承 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Persone ...
- laravel中的自定义函数的加载和第三方扩展库加载
l 1. 创建文件 app/Helpers/functions.php <?php // 示例函数 function foo() { return "foo"; } 2. 修 ...
- Android -- Serializable和Parcelable需要注意的
Serializable 静态变量序列化不会被保存 public class Test implements Serializable { private static final long seri ...
- List 多次排序
List<Patientmain> list = patientmains.OrderBy(p => p.Firstname).ThenBy(p => p.Middlename ...
- tail -f 然后grep,处理缓存的问题
学习了:http://www.quwenqing.com/read-134.html 对日志记录做多次grep过滤输出,格式如下: tail -f log | grep xxx | grep yyy ...
- Cognos11中关于CJAP第三方认证的相关配置
cognos11同样适用于自定义java程序的第三方认证,而且在测试方面给了直观的测试接口,如下图所示 当用户配置好了自定义java程序的认证之后,程序会提示用户输入我们自己的认证库用户信息例如adm ...