JAVA多线程学习六-守护线程
java中的守护程序线程是一个服务提供程序线程,它为用户线程提供服务。 它的生命依赖于用户线程,即当所有用户线程都死掉时,JVM会自动终止该线程。
有许多java守护程序线程自动运行,例如 gc,finalizer 等
通过在命令提示符下键入jconsole来查看所有详细信息。 jconsole工具提供有关已加载类,内存使用情况,运行线程等的信息。
Java中的守护程序线程的要点
- 它为用户线程提供后台支持任务的服务。它在生命中没有为服务用户线程而发挥作用。
- 它的生命取决于用户线程。
- 它是一个低优先级的线程。
如果没有用户线程,为什么JVM会终止守护程序线程?
守护程序线程的唯一目的是它为用户线程提供后台支持任务的服务。 如果没有用户线程,为什么JVM要继续运行这个线程?这就是为什么JVM在没有用户线程的情况下终止守护进程线程的原因。
Thread类的Java守护程序线程的方法
java.lang.Thread类为java守护程序线程提供了两种方法。
| 编号 | 方法 | 描述 |
| 1 | public void setDaemon(boolean status) | 用于将当前线程标记为守护程序线程或用户线程。 |
| 2 | public boolean isDaemon() |
用于检查当前是守护进程。 |
Java中守护程序线程的简单示例
文件:TestDaemonThread1.java
package com.example.thread;
public class TestDaemonThread1 extends Thread {
public void run() {
if (Thread.currentThread().isDaemon()) {// checking for daemon thread
System.out.println("daemon thread work");
} else {
System.out.println("user thread work");
}
}
public static void main(String[] args) {
TestDaemonThread1 t1 = new TestDaemonThread1();// creating thread
TestDaemonThread1 t2 = new TestDaemonThread1();
TestDaemonThread1 t3 = new TestDaemonThread1();
t1.setDaemon(true);// now t1 is daemon thread
t1.start();// starting threads
t2.start();
t3.start();
}
}
输出
daemon thread work
user thread work
user thread work
IllegalThreadStateException。package com.example.thread;
class TestDaemonThread2 extends Thread {
public void run() {
System.out.println("Name: " + Thread.currentThread().getName());
System.out.println("Daemon: " + Thread.currentThread().isDaemon());
}
public static void main(String[] args) {
TestDaemonThread2 t1 = new TestDaemonThread2();
TestDaemonThread2 t2 = new TestDaemonThread2();
t1.start();
t1.setDaemon(true);// will throw exception here
t2.start();
}
}
执行出现异常
Exception in thread "main" Name: Thread-0
Daemon: false
java.lang.IllegalThreadStateException
at java.lang.Thread.setDaemon(Unknown Source)
at com.yiibai.TestDaemonThread2.main(TestDaemonThread2.java:13)
https://www.yiibai.com/java_multithreading/daemon-thread.html
JAVA多线程学习六-守护线程的更多相关文章
- Java多线程学习(四)---控制线程
控制线程 摘要: Java的线程支持提供了一些便捷的工具方法,通过这些便捷的工具方法可以很好地控制线程的执行 1. join线程控制,让一个线程等待另一个线程完成的方法 2. 后台线程,又称为守护线程 ...
- java多线程系列六、线程池
一. 线程池简介 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池. 2. 使用线程池的好处 a) 降低资源的消耗.使用线程池不用频繁的创建线程和销毁线程 b) 提高响应速度,任 ...
- Java多线程学习笔记之一线程基础
1.进程与线程 1.1 进程:是正在运行中的程序的实例,一个运行中idea就是一个进程.进程有它自己的地址空间,一般情况下,包括文本区域(text region).数据区域(data region)和 ...
- JAVA多线程提高六:java5线程并发库的应用_线程池
前面我们对并发有了一定的认识,并且知道如何创建线程,创建线程主要依靠的是Thread 的类来完成的,那么有什么缺陷呢?如何解决? 一.对比new Threadnew Thread的弊端 a. 每次ne ...
- Java多线程编程之守护线程
Java的线程分为两种,一个是用户线程,一个是守护线程.守护线程守护的对象就是用户线程,当用户线程结束后,守护它的守护线程也就会结束.二者的本质基本是一样的,唯一区别在于何时结束. 用户线程:直到自己 ...
- java 多线程8(守护线程)
比如:后台偷偷运行的那些,qq下载更新包 如果一个进程中只剩下了守护线程,那么守护线程也会死亡.. 一个线程默认都不是守护线程. 判断是否是守护线程:例:d.isDaemon(); 当一个线程随着你的 ...
- java多线程(六)线程控制类
1. 多线程控制类 为了保证多线程的三个特性,Java引入了很多线程控制机制,下面介绍其中常用的几种: l ThreadLocal l 原子类 l Lock类 l Volatile关键字 ...
- java多线程学习-同步之线程通信
这个示例是网上烂大街的,子线程循环100次,主线程循环50次,但是我试了很多次,而且从网上找了很多示例,其实多运行几次,看输出结果并不正确.不知道是我转牛角尖了,还是怎么了.也没有大神问,好痛苦.现在 ...
- Java多线程(六)——线程让步
一.yield()介绍 yield()的作用是让步.它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权:但是,并不能保证在当前线程调用yield()之后,其它 ...
随机推荐
- JSP中的九大内置对象
JSP九大内置对象 pageContext 存东西 Request 存东西 Response Session 存东西 Application(servletContext) 存东西 config(se ...
- JDK httpClient 详解(源码级分析)——概览及架构篇
1. 前言 2018年9月,伴随着java 11的发布,内置的httpclient正式登上了历史的舞台.此前,JDK内置的http工具URLConnection性能羸弱,操作繁琐,饱受诟病,也因此令如 ...
- 论文翻译:2020_ACOUSTIC ECHO CANCELLATION WITH THE DUAL-SIGNAL TRANSFORMATION LSTM NETWORK
论文地址:https://ieeexplore.ieee.org/abstract/document/9413510 基于双信号变换LSTM网络的回声消除 摘要 本文将双信号变换LSTM网络(DTLN ...
- node.js安装及环境配置超详细教程【Windows系统安装包方式】
文章目录 Step1:下载安装包 Step2:安装程序 Step3:查看 Step4:环境配置 最后补充: Step1:下载安装包 https://nodejs.org/zh-cn/download/ ...
- CSS基础 overflow 内容溢出部分显示效果
属性:overflow 值 作用 visible 默认,内容溢出部分可见 hidden 内容溢出部分不可见 scroll 内容有无溢出,都有滚动条 auto 有内容溢出,自动显示滚动条
- python selenium + web自动化,切换到新的窗口,元素定位不到?
问题描述: 自动化由首页切换到分页面,打开了一个新的窗口,不过,定位不到这个窗口的元素,通过开发者工具是可以查到这个元素的 原因是: 因为窗口句柄还停留在上一个页面,所以导致无法定位元素.报错 &qu ...
- Git 如何放弃所有本地修改
git checkout . #本地所有的修改,没有提交的,都返回到原来的状态 git stash #把所有没有提交的修改暂存到stash里面.可用git stash pop恢复. git reset ...
- Linux上天之路系列目录
Linux上天之路系列目录 Linux上天之路(一)之Linux前世今生 Linux上天之路(二)之Linux安装 Linux上天之路(三)之Linux系统目录 Linux上天之路(四)之Linux界 ...
- Linux上天之路(三)之Linux系统目录
1. Linux设计思想 1) 程序应该小而专一,程序应该尽量的小,且只专注于一件事上,不要开发那些看起来有用但是90%的情况都用不到的特性: 2) 程序不只要考虑性能, 程序的可移植性更重要,she ...
- HDU 2673-shǎ崽 OrOrOrOrz(C语言描述)
问题描述 问题是: 为您提供了一系列不同的整数, 请选择 "数字" 如下: 首先选择最大的, 然后是最小的, 然后是第二个最大的, 第二个最小的. 直到所有的数字被选中.例如, 给 ...