您的位置:首页 > 编程语言 > Java开发

Java守护线程简介

2017-05-12 13:25 162 查看
在没有去了解Java守护线程是什么之前,大家是怎么猜测它的?反正我是这样以为的:

Java守护线程应该是一直运行在后台的后台线程。

结果发现我太天真了,今天简单介绍一下Java的守护线程。

Java守护线程

Java中的线程分为两类:

用户线程(非守护线程);

守护线程

在JVM中,守护线程(Deamon线程)的优先级是很低的,低于用户线程,他们的作用就是服务于用户线程(非守护线程,以后都称用户线程)。你可以把守护线程比喻为服务员,用户线程比喻为顾客,服务员都是围绕顾客存在的,所以如果JVM中所有的用户线程都停止了的话,守护线程也就没有可以服务的线程了,自然就没有存在的价值了,这时JVM将会退出。

只要JVM中存在至少一个用户线程,JVM就不会退出。

在Java中,可以使用如下的方式设置一个线程为守护线程:

Thread.setDeamon(true);


setDeamon
是线程类中的函数,使用这个函数可以将一个线程设置为守护线程,默认值为false。

有几点需要注意:

如果要设置一个线程为守护线程,必须在线程启动之前设置,如果线程已经启动了再设置该选项,将会报异常;

守护线程中新产生的线程也是守护线程;

一些必须要有结果的任务(比如写文件,计算数据)不应该分配个守护线程执行,因为它可能在某个时刻就随JVM一同退出了。

典型的守护线程

Java中的垃圾回收线程是一个典型的守护线程,它为其他用户线程回收垃圾而存在,假如用户线程全部都退出了,也就不会产生垃圾了,它也就没有必要存在了,这时JVM将退出,随之垃圾回收线程也就退出了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: