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

天津网站制作工具网站设计公司网站设计公司

天津网站制作工具,网站设计公司网站设计公司,生意网官网,做女团学什么舞蹈视频网站大家可能都听过JDK7中的HashMap在多线程环境下可能造成CPU 100%的现象#xff0c;这个由于在扩容的时候put时产生了死链#xff0c;由此会在get时造成了CPU 100%。这个问题在JDK8中的HashMap获得了解决。其实JDK7中的HashMap在多线程环境下不止只有CPU 100%这一共怪异现象这个由于在扩容的时候put时产生了死链由此会在get时造成了CPU 100%。这个问题在JDK8中的HashMap获得了解决。其实JDK7中的HashMap在多线程环境下不止只有CPU 100%这一共怪异现象它还可能造成插入的数据丢失有兴趣的读者可以自行了解下。对于HashMap多线程的问题我们通常会这么反问HashMap设计上就不是多线程安全的何必要去在多线程环境下用呢的确如此我们不会傻到显式的在多线程环境下调用但是又可能在你所关注的视角范围外是多线程的其隐式地让HashMap置于多线程环境下了这个又难以一下子察觉到。再者对于HashMap多线程的问题我们很多时候推荐使用ConcurrentHashMap来代替HashMap应用于多线程的环境很不巧的是ConcurrentHashMap也有可能会造成CPU 100%的异常现象。这个怪异现象存在于JDK8的ConcurrentHashMap中在JDK9中已经得到修复可以参见https://bugs.openjdk.java.net/browse/JDK-8062841什么情况下JDK8的ConcurrentHashMap会出现这个Bug呢首先我们来运行一下这段代码MapString, String map  new ConcurrentHashMap(); map.computeIfAbsent(AaAa,key - map.computeIfAbsent(BBBB, key2 - value)); 你会惊奇的发现这个程序一直处于Running状态我们通过top -Hp [pid]命令查看到其中一个线程的CPU使用率接近100%参考下图可以看到pid为31417的东东我们再通过jstack -l [pid]命令查看到对应的线程为注意将nid0x7ab9的16进制转为10进制就是31417。可以看到问题是发生在了computeIfAbsent方法中我们将示例中的程序换成下面这段程序也会同样出现CPU 100%的Bugmap.computeIfAbsent(AaAa,(String key) - {map.put(BBBB, value);return value;}); 问题的关键在于递归使用了computeIfAbsent方法笔者在stackoverflow上还搜索到了同类型的问题下面的示例程序中调用fibonacci方法同样也会造成CPU 100%.static MapInteger, Integer concurrentMap  new ConcurrentHashMap();public static void main(String[] args) {System.out.println(Fibonacci result for 20 is  fibonacci(20)); }static int fibonacci(int i) {if (i  0)return i;if (i  1)return 1;return concurrentMap.computeIfAbsent(i, (key) - {System.out.println(Value is   key);return fibonacci(i - 2)  fibonacci(i - 1);}); } 至于为什么会发生这个BUG答案就在ConcurrentHashMap中的computeIfAbsent方法中自己去捞吧。怎么规避这个问题呢只要不在递归中使用computeIfAbsent方法就好啦或者降级用可爱的分段锁或者升级JDK9~【End】老王给大家准备一份「Java最常见200面试题全解析」助力大家找到更好的工作这份面试题包含的模块Java、JVM 最常见面试题解析Spring、Spring MVC、MyBatis、Hibernate 面试题解析MySQL、Redis 面试题解析RabbitMQ、Kafka、Zookeeper 面试解析微服务 Spring Boot、Spring Cloud 面试解析扫描下面二维码付费阅读关注下方二维码订阅更多精彩内容。转发朋友圈是对我最大的支持。
http://www.pierceye.com/news/805967/

相关文章:

  • 下载ppt模板免费的网站在线做头像网站
  • 网络推广怎么免费做网站内部优化的方法
  • 沧州wap网站制作哈尔滨建设网证件查询
  • 一键查询注册过的网站快速排名教程
  • 响应式模板网站泰安招聘信息最新招聘2021
  • 信阳市住房和城乡建设厅网站wordpress加载速度
  • 建设本地网站 配置iis百度h5在线制作免费
  • 网站托管服务器做外贸去哪些网站找老外
  • 一个空间可以做几个网站微信公众号 做不了微网站
  • 嘉兴seo外包公司黄骅seo
  • 做网站录入和查询需求网络推广公司口碑
  • 招远专业做网站公司wordpress获取qq昵称 头像
  • 河北网站建设业务服务称赞的项目管理平台
  • 用jsp做的网站首页如何建立一个网站来卖东西
  • 外贸型网站建设的基本流程宣传型网站建设
  • 济南手机网站开发公司贵阳网络推广公司
  • 网站开发需求模板找网络公司做推广费用
  • 网站推广工具推荐广州公关公司招聘
  • 网站搭建平台源码做健身网站开题报告
  • 大芬网站建设樟树网站开发
  • 北京通州个人网站建设哈尔滨建设工程招投标办公室
  • 怎样开个人网站如何做百度免费推广
  • 深圳成品网站超市佛山网站建设机构
  • 江苏 网站建设第一次做网站做后感
  • wordpress翻译公司网站没事网站建设项目规划书
  • 东莞建设年审网站我的世界充钱网站怎么做
  • 太原网站排名系统电子商务市场营销
  • 社区网站开发进度表2018年做网站还能
  • 论企业网站建设的必要性内网网站搭建设
  • 网站建设怎么翻译如何建立自己的网站