一、线程
JAVA线程分为即实线程与守护线程,守护线程是优先级低,存活与否不影响JVM的退出的线程,实现守护线程的方法是在线程start()之前setDaemon(true),否则会抛出一个IllegalThreadStateException异常。不能操作文件、数据库等资源,避免主线程关闭而未能关闭守护线程的资源,并且它会在任何时候甚至在一个操作的中间发生中断。
二、优点及使用场景
在主线程关闭后无需手动关闭守护线程,因为会自动关闭,避免了麻烦,Java垃圾回收线程就是一个典型的守护线程,简单粗暴的可以理解为所有为线程服务而不涉及资源的线程都能设置为守护线程。
作者:梦里藍天
来源:CSDN
原文:setDaemon详解
举个例子:
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);当为守护线程的时候,主方法结束,守护线程就会结束.
很好理解,具体使用的话,要自己看看了
今天的文章setdaemon(true)_setoption参数分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/78517.html