设计网站收费在线长图生成器
news/
2025/9/23 8:07:00/
文章来源:
设计网站收费,在线长图生成器,软件商城推荐,注册一个公司网站的费用大家都知道java中有很多的基础知识#xff0c;需要大家花费一定的时间去消化。关于java中ConcurrentHashMap的扩容机制不知道大家是否了解过#xff0c;其实内容也是很好理解的#xff0c;一起来看看吧。首先#xff0c;我们需要知道的是#xff1a;1. 计算每个线程可以处…大家都知道java中有很多的基础知识需要大家花费一定的时间去消化。关于java中ConcurrentHashMap的扩容机制不知道大家是否了解过其实内容也是很好理解的一起来看看吧。首先我们需要知道的是1. 计算每个线程可以处理的桶区间。默认 16.2. 初始化临时变量nextTable扩容 2 倍。3. 死循环计算下标。完成总体判断。4. 如果桶内有数据同步转移数据。通常会像链表拆成2份。然后来看一下java中ConcurrentHashMap的扩容机制是怎样的?它的大体思想就是遍历、复制的过程。首先根据运算得到需要遍历的次数i然后利用tabAt方法获得i位置的元素如果这个位置为空就在原table中的i位置放入forwardNode节点这个也是触发并发扩容的关键点;如果这个位置是Node节点(fh0)如果它是一个链表的头节点就构造一个反序链表把他们分别放在nextTable的i和in的位置上如果这个位置是TreeBin节点(fh0)也做一个反序处理并且判断是否需要untreefi把处理的结果分别放在nextTable的i和in的位置上遍历过所有的节点以后就完成了复制工作这时让nextTable作为新的table并且更新sizeCtl为新容量的0.75倍 完成扩容。最后说一下多线程是如何完成的如果遍历到的节点是forward节点就向后继续遍历再加上给节点上锁的机制就完成了多线程的控制。多线程遍历节点处理了一个节点就把对应点的值set为forward另一个线程看到forward就向后遍历。这样交叉就完成了复制工作。上述的内容是不是很好理解呢?其实java中像这样的基础知识还是有很多的具体的就需要大家自己去了解和学习了。想要了解更多java基础知识敬请关注奇Q工具网。推荐阅读
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911857.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!