当前位置: 首页 > news >正文

网站建设和网站设计的区别局机关网站建设

网站建设和网站设计的区别,局机关网站建设,制作书签的意义,国家工商企业信用信息公示系统在Java中有两类线程#xff0c;分别是User Thread#xff08;用户线程#xff09;和Daemon Thread#xff08;守护线程#xff09; 。 用户线程很好理解#xff0c;我们日常开发中编写的业务逻辑代码#xff0c;运行起来都是一个个用户线程。而守护线程相对来说则要特别…在Java中有两类线程分别是User Thread用户线程和Daemon Thread守护线程 。 用户线程很好理解我们日常开发中编写的业务逻辑代码运行起来都是一个个用户线程。而守护线程相对来说则要特别理解一下。 1.1 什么是守护线程 在操作系统里面是没有所谓的守护线程的概念的只有守护进程一说。但是Java语言机制是构建在JVM的基础之上的这一机制意味着Java平台是把操作系统的底层给屏蔽了起来所以它可以在它自己的虚拟的平台里面构造出对自己有利的机制。而Java语言或者说平台的设计者多多少少是收到Unix操作系统思想的影响而守护线程机制又是对JVM这样的平台凑合于是守护线程应运而生。 所谓的守护线程指的是程序运行时在后台提供的一种通用服务的线程。比如垃圾回收线程就是一个很称职的守护者并且这种线程并不属于程序中不可或缺的部分。因此当所有的非守护线程结束时程序也就终止了同时会杀死进程中的所有守护线程。反过来说只要任何非守护线程还在运行程序就不会终止。 事实上User Thread用户线程和Daemon Thread守护线程从本质上来说并没有什么区别唯一的不同之处就在于虚拟机的离开如果用户线程已经全部退出运行了只剩下守护线程存在了虚拟机也就退出了。 因为没有了被守护者守护线程也就没有工作可做了也就没有继续运行程序的必要了。 1.2 守护线程的使用与注意事项 守护线程并非只有虚拟机内部可以提供用户也可以手动将一个用户线程设定/转换为守护线程。 在Thread类中提供了一个setDaemon(true)方法来将一个普通的线程用户线程设置为守护线程。 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()之前thread.start(); // 开始执行分进程} }上面这段代码的运行结果是文件daemon.txt中没有daemon字符串。 但是如果把thread.setDaemon(true);这行代码注释掉文件daemon.txt是可以被写入daemon字符串的因为这个时候这个线程就是普通的用户线程了。 简单理解就是JRE判断程序是否执行结束的标准是所有的前台线程用户线程执行完毕了而不管后台线程守护线程的状态。 1.3 守护线程的应用场景 前面说了那么多那么Daemon Thread的实际应用在那里呢举个例子Web服务器中的Servlet在容器启动时后台都会初始化一个服务线程即调度线程负责处理http请求然后每个请求过来调度线程就会从线程池中取出一个工作者线程来处理该请求从而实现并发控制的目的。也就是说一个实际应用在Java的线程池中的调度线程。 1.4 总结 从我的理解守护线程就是用来告诉JVM我的这个线程是一个低级别的线程不需要等待它运行完才退出让JVM喜欢什么时候退出就退出不用管这个线程。 在日常的业务相关的CRUD开发中其实并不会关注到守护线程这个概念也几乎不会用上。 但是如果要往更高的地方走的话这些深层次的概念还是要了解一下的比如一些框架的底层实现。
http://www.huolong8.cn/news/112946/

相关文章:

  • 文明网站建设管理培训心得深圳三合一建设网站
  • 北京软件开发培训百度seo怎么提高排名
  • 温州敎玩具网站建设最低成本做企业网站
  • 建设专业网站运营团队wordpress调用随机文章
  • 信阳住房和城乡建设厅网站php网站开发实例视频
  • 金融软件网站建设公司排名做的好的网站开发
  • 上海景泰建设有限公司网站名师工作室网站建设 意义
  • 网站设计 企业 济南律师事务所网站设计方案
  • 小城镇建设网站的观点网站的数据库在哪里
  • 厦门网站制作计划网站开发是什么
  • 网站建设创业基础ppt模板企业信息查询免费软件
  • 专业的上海网站建设公司哪家好科技股份公司网站模板
  • wordpress 子网站重命名建筑设计参考网站
  • 网站开发php价格做婚介打么网站好
  • 手机免费建网站wordpress开发找工作
  • 网站 优点wordpress 发布时间
  • 彩票交易网站开发wordpress论坛建设
  • 把货卖到国外有哪些平台关键词排名优化系统
  • 长沙营销型网站制作互联网公司排行
  • 软件开发网站开发中国有多少个网站
  • 品牌建设网站有哪些做网站的是不是程序员
  • 做视频怎样传到网站做网站卖大闸蟹
  • 企业网站开发开题报告上海关键词优化按天计费
  • 网页制作模板的网站云优化网站建设
  • 遵义网站建设哪家好淘宝客做网站推广赚钱吗
  • 外贸建站服务推广公司做商品网站
  • 网站建设课程 谷建门户网站含义
  • 各种wordpress图片相册插件比较找一个网站做优化分析
  • 江门网站自助建站成都程序员培训机构
  • 看案例网站备案 网站名称什么用