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

高端品牌网站建设有哪些注意事项河池企业网站开发公司

高端品牌网站建设有哪些注意事项,河池企业网站开发公司,小程序注册完成后如何制作,安徽六安邮编写在开头 面试官#xff1a;小伙子请聊一聊Java中的精灵线程#xff1f; 我#xff1a;什么#xff1f;精灵线程#xff1f;啥时候精灵线程#xff1f; 面试官#xff1a;精灵线程没听过#xff1f;那守护线程呢#xff1f; 我#xff1a;守护线程知道#xff0c;就…写在开头 面试官小伙子请聊一聊Java中的精灵线程 我什么精灵线程啥时候精灵线程 面试官精灵线程没听过那守护线程呢 我守护线程知道就是为普通线程服务的线程嘛。 面试官没了守护线程的特点怎么使用需要注意啥Java中经典的守护线程都有啥 我不知道。。。 这的天面试一个10K的工作上来先整个精灵线程直接把人整蒙了难道提及Java多线程的时候问的不应该是线程、线程池、并发冲突解决方案、如何加锁以及各种锁的知识点吗上来整个偏门的守护线程这是出心的不想要啊。 何为守护线程 上面这段内容是在牛客上看到的说实话这位面试官问的这内容确实主要一个东西没用但你得知道可如果说他问的真是离谱吗也算不上精灵线程我们很少听到但守护线程我们在学习Java线程的时候肯定有所耳闻那么今天我们就一起来小酌一下这个 “ 守护线程 ” Java中的线程分为2种用户线程和守护线程 用户线程又叫普通线程是我们驱动业务逻辑运转的核心而守护线程顾名思义是守护用户线程的一种线程运行在后台提供通用服务因此也叫后台线程或者精灵线程。 守护线程的使用场景 那在Java中这个守护线程都有什么实际用处或者说应用场景呢 GC垃圾回收线程这是JVM中非常经典的一个守护线程它始终以低级别状态运行用于实时监控和管理系统中的可回收资源一旦我们的系统没有任何运行的用户线程时程序也就不会再产生垃圾这时无事可做的垃圾回收线程会自动结束。应用指标统计部分服务可以通过守护线程来采取应用指标服务结束则停止采集。 怎么设置守护线程 那我们在代码中如何将一个线程设置为守护线程呢咱们可以通过在 start 线程之前调用线程的 setDaemon(true) 方法将一个线程设置为守护线程来看一下下面的这个demo。 【代码实例1】 public class Test {public static void main(String[] args) {Thread thread1 new Thread(守护线程){Overridepublic void run() {int i 0;while (i 4){i;try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()i);}super.run();}};Thread thread2 new Thread(用户线程){Overridepublic void run() {int i 0;while (i 2){i;try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()i);}super.run();}};//setDaemon, 不设置则默认falsethread1.setDaemon(true);//设置thread1为守护线程thread2.setDaemon(false);//设置thread2为普通线程thread1.start();thread2.start();} }输出 守护线程1 用户线程1 用户线程2 守护线程2这段测试代码中我们通过thread1.setDaemon(true)将线程1设置成了一个守护线程false为普通线程用户线程的循环次数为2用户线程的循环次数为4但当程序中的用户线程运行完之后守护线程并没有继续向下循环而是随着用户线程的结束而自我终止了。 守护线程的优先级 看到网上很多博文提到了守护线程的优先级问题都说守护线程的优先级比较低那我们通过一段测试用例看一下真实情况。 【代码实例2】 public class Test {public static void main(String[] args) {Thread thread1 new Thread(守护线程){Overridepublic void run() {int i 0;while (i 4){i;try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()i-优先级 Thread.currentThread().getPriority());}super.run();}};Thread thread2 new Thread(用户线程){Overridepublic void run() {int i 0;while (i 2){i;try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()i-优先级 Thread.currentThread().getPriority());}super.run();}};//setDaemon, 不设置则默认falsethread1.setDaemon(true);//设置thread1为守护线程thread2.setDaemon(false);//设置thread2为普通线程thread1.start();thread2.start();for (int i 0; i 5 ; i) {System.out.println(主线程i-优先级 Thread.currentThread().getPriority());}} }输出 主线程0-优先级5 主线程1-优先级5 主线程2-优先级5 主线程3-优先级5 主线程4-优先级5 用户线程1-优先级5 守护线程1-优先级5 用户线程2-优先级5 守护线程2-优先级5这个测试结果是不是出乎意料无论是主线程还是普通的用户线程又或者说守护线程他们的优先级都是5优先级竟然都一样 我们知道所谓的线程就是CPU 调度和分派的基本单位根据优先级不同来决定获取CPU时间片的先后顺序因为主线程启动时其他线程还没有启动所以这时候它最先获得CPU调度权限 又因为其他线程存在休眠时间这个时间段上足够主线程执行完毕。主线程执行完后用户线程和守护线程互相抢占CPU资源交错执行直至程序中没有普通线程为止若没有休眠时间且循环次数足够多时我们可以看到主线程、守护线程、用户线程都竞争CPU时间片呈现交错执行的结果 注意事项 在设置线程为守护线程的时候要注意一个事情那就是当 start(); 放到 setDaemon(true); 之前程序抛出IllegalThreadStateException。如下图 原因是 setDaemon(true)源码中有一个isAlive()的判断判断当前线程的状态是否为活跃线程若是则抛出异常我们不能修改一个正在运行中的线程 【源码解析1】 public final void setDaemon(boolean on) {checkAccess();//线程已经启动后不可修改否则抛出非法线程状态异常if (isAlive()) {throw new IllegalThreadStateException();}daemon on;}总结 OK写到这里关于守护线程的内容就讲完了我们从什么是守护线程守护线程的使用场景优先级注意事项等方面进行了全面的介绍。 其实说实话在我们日后工作中很少直接使用上守护线程所以它看似没那么重要但在很多Java多线程相关的书籍中绝对都有提及很多小伙伴在学习的过程中认为这个点不重要也就相当然的忽略了但遇到变态的面试官专门挑拣一些偏僻的知识点考你时难免陷入尴尬所以希望借助这个考题大家能够在日后更细心的学习哈。 结尾彩蛋 如果本篇博客对您有一定的帮助大家记得留言点赞收藏呀。原创不易转载请联系Build哥 如果您想与Build哥的关系更近一步还可以关注“JavaBuild888”在这里除了看到《Java成长计划》系列博文还有提升工作效率的小笔记、读书心得、大厂面经、人生感悟等等欢迎您的加入
http://www.pierceye.com/news/785864/

相关文章:

  • asp 网站名字免费的公众号排版工具
  • 郑州响应式建站查企业的信息在哪个官网
  • 大型企业网站开发怎么使用免费的wordpress
  • 大连做网站大公司建设项目咨询公司网站
  • 教育培训网站建设方案鞍山建设信息网站
  • 重庆网站建设哪家强平台如何做推广
  • 安徽省建设安全监督站的网站网站建设公司一般多少钱
  • 服装网站建设策划书3000字软件开发包含网站开发吗
  • 免费网站的建设绵阳网站建设制作
  • 学生处网站建设招标公告网站包括哪些主要内容
  • 成都门户网站建设多少钱聚合广告联盟
  • 坦克大战网站开发课程设计报告软文营销的本质
  • 美食网站开发网站登录验证码是怎么做的
  • 电子商务网站排名辽宁省建设工程信息网业绩公示
  • 天津建设科技杂志的官方网站wordpress cnzz插件
  • 滨州建设网站太原网站建设优化
  • 记事本做网站怎么改字体包装设计模板设计素材
  • 下载软件的网站推荐thinkphp和wordpress
  • 青海省城乡和住房建设厅网站合肥小吃培训网页设计
  • 财经门户网站建设django校园网站开发
  • 泉州网站建设报价广东建设厅网站
  • 建设网站的源代码的所有权wordpress网站打开慢
  • 印度外贸网站有哪些家居小程序源码下载
  • 上海网站建设中心pc官方网站
  • 深圳企业网站制作公司查询西安网站设计哪家好
  • 大埔做网站手机qq邮箱发布了wordpress
  • 寻找南昌网站设计单位网站建设 中企动力医院
  • 中间商可以做网站吗平面广告设计师的工作内容
  • 网站建设用户分析做网站有什么软件
  • 洛阳网站建设启辰网络wordpress怎么破解查看