全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java 守护线程_动力节点Java学院整理

估计学过Unix开发但是没有细致学习Java的同学们会疑惑了,操作系统里面是没有所谓的守护线程的概念,只有守护进程一说,但是Java语言机制是构建在JVM的基础之上的,意思是Java平台把操作系统的底层给屏蔽起来,所以它可以在它自己的虚拟的平台里面构造出对自己有利的机制,而语言或者说平台的设计者多多少少是收到Unix思想的影响,而守护线程机制又是对JVM这样的平台凑合,于是守护线程应运而生。

       Daemon的作用是为其他线程的运行提供服务,比如说GC线程。其实User Thread线程和Daemon Thread守护线程本质上来说去没啥区别的,唯一的区别之处就在虚拟机的离开:如果User Thread全部撤离,那么Daemon Thread也就没啥线程好服务的了,所以虚拟机也就退出了。

       守护线程并非虚拟机内部可以提供,用户也可以自行的设定守护线程,方法:public final void setDaemon(boolean on) ;但是有几点需要注意:

1)、thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。  (备注:这点与守护进程有着明显的区别,守护进程是创建后,让进程摆脱原会话的控制+让进程摆脱原进程组的控制+让进程摆脱原控制终端的控制;所以说寄托于虚拟机的语言机制跟系统级语言有着本质上面的区别)

2)、 在Daemon线程中产生的新线程也是Daemon的。  (这一点又是有着本质的区别了:守护进程fork()出来的子进程不再是守护进程,尽管它把父进程的进程相关信息复制过去了,但是子进程的进程的父进程不是init进程,所谓的守护进程本质上说就是“父进程挂掉,init收养,然后文件0,1,2都是/dev/null,当前目录到/”)

3)、不是所有的应用都可以分配给Daemon线程来进行服务,比如读写操作或者计算逻辑。因为在Daemon Thread还没来的及进行操作时,虚拟机可能已经退出了。

例子:

//完成文件输出的守护线程任务
import java.io.*; 
class TestRunnable implements Runnable{ 
  public void run(){ 
        try{ 
         Thread.sleep(1000);//守护线程阻塞1秒后运行 
         File f=new File("daemon.txt"); 
         FileOutputStream os=new FileOutputStream(f,true); 
         os.write("daemon".getBytes()); 
      } 
        catch(IOException e1){ 
     e1.printStackTrace(); 
        } 
        catch(InterruptedException e2){ 
         e2.printStackTrace(); 
      } 
  } 
} 
public class TestDemo2{ 
  public static void main(String[] args) throws InterruptedException 
  { 
    Runnable tr=new TestRunnable(); 
    Thread thread=new Thread(tr); 
        thread.setDaemon(true); //设置守护线程 
    thread.start(); //开始执行分进程 
  } 
} 

运行结果:文件daemon.txt中没有"daemon"字符串。

但是如果把thread.setDaemon(true); //设置守护线程注释掉,文件daemon.txt是可以被写入daemon字符串的 

  JRE判断程序是否执行结束的标准是所有的前台执线程行完毕了,而不管后台线程的状态,因此,在使用后台线程候一定要注意这个问题。

但是daemon Thread实际应用在那里呢?举个例子,web服务器中的Servlet,容器启动时后台初始化一个服务线程,即调度线程,负责处理http请求,然后每个请求过来调度线程从线程池中取出一个工作者线程来处理该请求,从而实现并发控制的目的。
网上摘的一个图,方便大家理解:

以上所述是小编给大家介绍的Java 守护线程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# java  # 守护线程  # Java并发编程示例(七):守护线程的创建和运行  # Java线程之守护线程(Daemon)用法实例  # 浅谈java的守护线程与非守护线程  # 浅谈java中守护线程与用户线程  # 简单了解Java编程中线程的创建与守护线程  # Java守护线程实例详解_动力节点Java学院整理  # Java语言多线程终止中的守护线程实例  # 详解Java线程-守护线程与用户线程  # 【java 多线程】守护线程与非守护线程的详解  # Java后台线程操作示例【守护线程】  # Java守护线程用法实例分析  # 出了  # 又是  # 也就  # 小编  # 没啥  # 自己的  # 都是  # 操作系统  # 就在  # 在此  # 之处  # 在那里  # 这个问题  # 你不  # 给大家  # 同学们  # 相关信息  # 几点  # 它可以  # 应运而生 


相关文章: 如何注册花生壳免费域名并搭建个人网站?  兔展官网 在线制作,怎样制作微信请帖?  h5在线制作网站电脑版下载,h5网页制作软件?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  官网网站制作腾讯审核要多久,联想路由器newifi官网  如何选择靠谱的建站公司加盟品牌?  湖北网站制作公司有哪些,湖北清能集团官网?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何在宝塔面板创建新站点?  建站主机如何安装配置?新手必看操作指南  网站插件制作软件免费下载,网页视频怎么下到本地插件?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  网站制作公司排行榜,四大门户网站排名?  西安大型网站制作公司,西安招聘网站最好的是哪个?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  金*站制作公司有哪些,金华教育集团官网?  高端网站建设与定制开发一站式解决方案 中企动力  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  建站之星2.7模板:企业网站建设与h5定制设计专题  测试制作网站有哪些,测试性取向的权威测试或者网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  网站制作网站,深圳做网站哪家比较好?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  制作销售网站教学视频,销售网站有哪些?  建站之星如何一键生成手机站?  如何在阿里云服务器自主搭建网站?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  建站主机服务器选购指南:轻量应用与VPS配置解析  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  如何高效生成建站之星成品网站源码?  如何在云服务器上快速搭建个人网站?  江苏网站制作公司有哪些,江苏书法考级官方网站?  如何通过远程VPS快速搭建个人网站?  宝塔建站无法访问?如何排查配置与端口问题?  如何在香港服务器上快速搭建免备案网站?  制作农业网站的软件,比较好的农业网站推荐一下?  高防服务器租用指南:配置选择与快速部署攻略  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  详解jQuery中基本的动画方法  制作证书网站有哪些,全国城建培训中心证书查询官网?  如何配置支付宝与微信支付功能?  济南企业网站制作公司,济南社保单位网上缴费步骤?  寿县云建站:智能SEO优化与多行业模板快速上线指南  打鱼网站制作软件,波克捕鱼官方号怎么注册?  XML的“混合内容”是什么 怎么用DTD或XSD定义 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。