Java线程之setDaemon(true)方法的作用
一、线程
JAVA线程分为即实线程与守护线程,守护线程是优先级低,存活与否不影响JVM的退出的线程,实现守护线程的方法是在线程start()之前setDaemon(true),否则会抛出一个IllegalThreadStateException异常。不能操作文件、数据库等资源,避免主线程关闭而未能关闭守护线程的资源,并且它会在任何时候甚至在一个操作的中间发生中断。
二、优点及使用场景
在主线程关闭后无需手动关闭守护线程,因为会自动关闭,避免了麻烦,Java垃圾回收线程就是一个典型的守护线程,简单粗暴的可以理解为所有为线程服务而不涉及资源的线程都能设置为守护线程。
public class Demo {public static void main(String[] args) {Thread thread = new Thread(() -> {while (true) {try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("----睡眠一秒-----");}});//默认为false,设置为false代表非守护线程,true为守护线程,守护线程在主方法结束时候结束
// thread.setDaemon(true);thread.start();try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("主线程over");}
}
thread.setDaemon(false);这个方法默认为false,当为false情况下,输出:
结果:主方法执行完成并不会结束.
thread.setDaemon(true);当为守护线程的时候,主方法结束,守护线程就会结束.
Java线程之setDaemon(true)方法的作用相关推荐
- Thread的setDaemon(true)方法的作用
定义:守护线程--也称"服务线程",在没有用户线程可服务时会自动离开.优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务. 设置:通过setDaemon(true ...
- C++/Java线程之分
JAVA线程状态图 1.C++/windows中主线程结束,其他线程必然死亡(即使调用pthread_detach解除父子关系,主线程消亡时也会导致子线程被迫关闭). ----1.1 一个进程中可以有 ...
- Java之String系列--intern方法的作用及原理
原文网址:Java之String系列--intern方法的作用及原理_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java的String的intern方法的原理. 常量池简介 在 JAVA 语言中 ...
- 白话理解java多线程之setDaemon()方法
直接上例子: package cn.yh.thread01;/*** setDaemon 微信下载的例子 假如有一个线程,随着主程序存在而存在,停止而停止*/ public class Demo04 ...
- java swing中setVisible(true)方法的真正作用
setVisible(true);方法的意思是说数据模型已经构造好了,允许JVM可以根据数据模型执行paint方法开始画图并显示到屏幕上了,并不是显示图形,而是可以运行开始画图了.这个方法和java多 ...
- python多线程之setDaemon和join
简单介绍:线程是程序执行的一个最小单元,当开启多线程时,主线程会创建多个子线程,在python中,默认情况下主线程执行完自己的任务之后就会退出,子线程会继续执行自己的任务,直到自己的任务结束为止. 不 ...
- Java线程之Synchronized用法
synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对 ...
- JAVA线程之Thread类详解
Thread类用于操作线程,是所以涉及到线程操作(如并发)的基础.本文将通过源码对Thread类的功能作用进行分析. 一.属性 /* Make sure registerNatives is the ...
- (JAVA)线程之lock和死锁(例)
package thread; import java.util.concurrent.locks.*;/*** @author Alina* @date 2021年12月20日 11:07 下午* ...
最新文章
- spring 基于XML的申明式AspectJ通知的执行顺序
- echart x轴标签偏移_移动端H5页面滑动手势X轴实例
- 【深度学习】超强优化器如何与网络有机结合
- java final关键字_终于明白 Java 为什么要加 final 关键字了!
- Apache和Apache Tomcat的区别
- python异步实现方式_Python通过yield实现异步
- 怎么安装红旗Linux5,如何用硬盘安装红旗LINUX5_0.doc
- 如何C#中实现在TreeView查找某一节点
- Intellij IDEA更新SVN没有提示语
- [转]Android Service Test——简单测试例子
- 西威变频器使用说明书_北京2020第三期变频器电路板维修技术培训开班通知
- 树状数组---Squared Permutation
- Javascript语言精粹--The Excellence in Javascript
- Ubuntu 默认启动到字符界面
- linux和window是服务器时间同步
- apkg格式怎么打开_jpg怎么转换成pdf?再不学就晚了!
- Windows 8 六大关机模式 详解
- linux rescue救援模式,Linux_linux中使用rescue救援模式,很多人都不知道Linux有一个救 - phpStudy...
- 2019QS世界大学学科排名重磅发布!
- 一个很有意思的并查集详解