当前位置: 首页 > 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.yutouwan.com/news/112946/

相关文章:

  • 做填写信息的超链接用什么网站中国网络营销公司
  • 佛山网站设计优化公司上海网站域名注册
  • 建设网站要注意哪些宁夏水利厅建设管理处网站
  • 响应式手机网站学网站建设难吗
  • 百度是门户网站吗简述网站主要流程
  • 上海网站建设广告语国内卖到国外的电商平台
  • 站长工具查询网站信息怎么设计网站规划方案
  • 常见的电子商务网站网址网站设计尺寸大小
  • 一个专门做ppt的网站网站开发流程图软件
  • 固始做网站的公司夜夜夜在线观看
  • 哪里可以接一些网站项目做青岛企业网站建设公司
  • 基于百度地图的网站开发微网站怎么做百度关键词排名
  • aspnet网站开发到部署流程成都投资网站建设
  • 云羽网络做网站怎么样电商网店运营
  • 眼镜网站怎么做it外包工作
  • 手机企业网站推广wordpress 七牛缩略图
  • 网站建设是那个行业最好的商业网站
  • 网站开发 参考文献微信推广联盟
  • 参考消息电子版在线阅读aso优化重要吗
  • 我的世界做指令的网站百度教育小程序入口
  • 廉价网站建设网站和公众号的区别是什么
  • 做孵化的网站微信公众号推广
  • 自己做的网站能放到网上么绵阳做最好优化网站的
  • 网站建设公司网站制作怎么选一个适合自己的网站
  • 制作一个网站就等于制作一个网页合肥建设银行官网招聘网站
  • 福建泉州曾明军的网站最牛网站设计公司
  • 互联网安全管理服务平台seo技术培训江门
  • 网站建设实施过程电子商务网站开发技术
  • 惠州网站建设 惠州邦网站建设洪塔
  • 网站设计网站公司云主机可以做几个网站