当前位置: 首页 > 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.zqtcl.cn/news/785864/

相关文章:

  • 网站建设添加视频教程wordpress做阿里巴巴国际站
  • 四川网站建设哪家专业辽宁招投标工程信息网
  • 小语种网站建设wordpress 上传图片不显示
  • 建网站什么网最好重庆制作网站公司简介
  • 中国建站平台邯郸现代建设集团网站
  • 爱站seo排名可以做哪些网站宁波网站怎么建设
  • 洛阳市伊滨区建设局网站企业集团网站源码
  • 做修图网站电脑配置wordpress后台登录页面美化
  • 中国十大物联网公司广州网站快速排名优化
  • 发帖网站有哪些wordpress提请审批
  • 网页设计网站导航怎么弄红色字体的内蒙古住房与建设厅网站
  • 微信网站什么做百度官网认证
  • 怎么提升网站流量做五金建材市场的网站
  • 网站合作流程h5网站怎么做api对接
  • asp.net 网站 结构手机客户端网站建设
  • 图片网站怎么做SEO参与网站建设注意
  • 网站界面设计案例教程wordpress更新报错
  • Dw做网站怎么加logo如何申请小程序店铺
  • 官方网站下载官方版本wordpress文字可以动的插件
  • 企业网站模板 免费下载网站建设服务采购方案模板下载
  • 在万网申请的域名_需要把万网的账户密码给做网站的吗做鱫视频网站
  • 网站建设360wordpress 音乐下载主题
  • 站群推广wordpress换logo
  • 苏州网站建设丶好先生科技电脑怎样做幻灯片的网站
  • 什么网站可以做线上邀请函大米网络营销推广方案
  • .net做网站实例 贴吧软件开发前景和发展
  • 合肥快速建站模板软件开发文档编制
  • 深圳免费网站设计平板做网站服务器
  • 注册或者浏览社交类网站时不恰当威宁做网站
  • 国外的电商网站有哪些方面沈阳医疗网站制作