龙空技术网

java编程开发用户线程和守护线程

运城达内教育 116

前言:

现时小伙伴们对“运城java”可能比较看重,兄弟们都需要知道一些“运城java”的相关内容。那么小编在网上搜集了一些有关“运城java””的相关知识,希望兄弟们能喜欢,姐妹们一起来学习一下吧!

我们在上文中给大家简单介绍了java编程开发中线程的状态类型等内容,而今天我们就在来了解一下,线程的类型都有哪些。下面我们就一起来聊聊用户线程和守护线程。

在java多线程开发中,有两类线程,分别是UserThread(用户线程)和DaemonThread(守护线程)。

用户线程很好理解,我们日常开发中编写的业务逻辑代码,运行起来都是一个个用户线程。而守护线程相对来说则要特别理解一下。

守护线程,类似于操作系统里面是守护进程。由于Java语言机制是构建在JVM的基础之上,这一机制意味着Java平台是把操作系统的进程给屏蔽了。所以需要在JVM里面构造出对自己有利的机制,于是守护线程应运而生。

所谓的守护线程,指的是程序运行时在后台提供的一种通用服务的线程。比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。

事实上,UserThread(用户线程)和DaemonThread(守护线程)从本质上来说并没有什么区别,的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。因为没有了被守护者,守护线程也就没有工作可做了,也就没有继续运行程序的必要了。

守护线程并非只有虚拟机内部可以提供,用户也可以手动将一个用户线程设定/转换为守护线程。

在Thread类中提供了一个setDaemon(true)方法来将一个普通的线程(用户线程)设置为守护线程。

标签: #运城java