首页 > 其他分享 >ConcurrentHashMap 相关

ConcurrentHashMap 相关

时间:2023-05-22 15:14:58浏览次数:52  
标签:JDK1.8 分段 ConcurrentHashMap 线程 时候 相关 Segment

为什么ConcurrentHashMap要放弃分段锁?

答:1、因为在 JDK7 中 Segment 继承了重入锁 ReentrantLock。在每个 Segment 在增长的时候,这时候锁的粒度也会在不断的增长。每个锁控制的是一段,当分段很多,并且加锁的分段不连续的时候,内存空间的浪费比较严重。

在并发操作中,因为分段锁的存在,线程操作的时候,争抢同一个分段锁的几率会小很多

2、既然小了,那么应该是优点了,但是大家有没有想过如果这一分块的分段很大的时候,那么操作的时间是不是就会变的更长了。

所以第二个问题出现了:如果某个分段特别的大,那么就会影响效率,耽误时间。当需要扩容时,需要重新分配段数组,并将原有数据复制到新数组中。这个过程需要停止所有的读写操作,并持有整个ConcurrentHashMap的全局锁,会导致所有的线程都被阻塞,对性能有很大的影响。

3、为了提高 GC 的效率

4、新的同步方案

所以,这也是为什么在 JDK8 不在继续使用分段锁的原因。

 

ConcurrentHashMap底层详解(图解扩容)(JDK1.8)

JDK1.8的ConcurrentHashMap底层实现解析

 

标签:JDK1.8,分段,ConcurrentHashMap,线程,时候,相关,Segment
From: https://www.cnblogs.com/r1-12king/p/17420653.html

相关文章

  • .NET入门相关学习
    2023年05月22日笔记项目信息实体添加新属性①类增加对应属性声明。②快捷键Ctrl+Shift+B生成新应用;或者终端指令dotnetbuild生成新应用。③对应Controller字段增加属性;View视图增加对应部件(Index/Create/Edit);更新 SeedData 类。④PMC中输入指令进行数据库模型迁移:Add-Mi......
  • irq中断相关(2023.5.22)
    //irq29:nobodycared(trybootingwiththe"irqpoll"option) //aer_irqthreaded   aer_isrDIsablingIRQ#105 https://blog.csdn.net/Guet_Kite/article/details/106689126note_interrupt(){if(unlikely(desc->irqs_unhandled>99900)){ ......
  • 相关数据进行训练(以心脏器官为例)
    数据训练1、下载相关数据(Task02_Heart)得到这样结构的数据:与教程中的Lung数据相符:2、使用命令进行数据训练pythontrain.py--config**configs/nnunet/msd_lung/nnunet_3d_fullres_msd_lung_fold0.yml**这里放置本机的文件路径--log_iters20--precisionfp16--nnunet-......
  • firewall-cmd相关
    使用命令firewall-cmd--list-all,查看到firewall 当前的状态列表。1public(active)2target:default3icmp-block-inversion:no4interfaces:wlo15sources:6services:dhcpv6-clientftpssh7ports:22/tcp8protocols:9forward:y......
  • Flask相关配置参数,加载配置文件
    Flask相关配置参数,加载配置文件#导入Flask类fromflaskimportFlask#Flask函数接收一个参数__name__,它会指向程序所在的包app=Flask(__name__)#装饰器的作用是将路由映射到视图函数[email protected]('/')defindex():return'HelloWorld'#Flask应用程......
  • 相关数据进行训练(以心脏器官为例)
    数据训练1、下载相关数据(Task02_Heart)得到这样结构的数据:与教程中的Lung数据相符:2、使用命令进行数据训练pythontrain.py--config**configs/nnunet/msd_lung/nnunet_3d_fullres_msd_lung_fold0.yml**这里放置本机的文件路径--log_iters20--precisionfp16--nnunet-......
  • Openresty 学习笔记(二)Nginx Lua 正则表达式相关API
    ngx.re.match语法: captures,err=ngx.re.match(subject,regex,options?,ctx?,res_table?)环境: init_worker_by_lua*,set_by_lua*,rewrite_by_lua*,access_by_lua*,content_by_lua*,header_filter_by_lua*,body_filter_by_lua*,log_by_lua*,ngx.timer.*,balancer......
  • 1.脚本高级命令,进程优先级命令,进程管理工具,任务相关命令
    一.总结脚本高级命令trap,install,mktemp,expect,进程优先级命令:nice,renice,进程管理工具:ps,pstree,prtstat,pgrep,pidof,uptime,mpstat,top,htop,free,pmap,vmstat,iostat,iotop,iftop,nload,nethogs,iptraf-ng,dstat,glances,cockpit,kill,job,任务......
  • 3.进程相关
    解析进程和线程的区别进程进程是一个具有独立功能的程序在一个数据集上的一次动态执行过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。进程具有的特性:动态性:......
  • 荐号 | Android 相关的公号推荐
    之前有部分人觉得我的文章更新慢,那么今天就来给大家推荐一些Android相关的其他公号,这些公号的作者都是我比较熟的圈内朋友,也是大家熟知的比较活跃的一些分享者,他们在业余时间也在进行原创分享,不过阅读量都不怎么大,所以很希望这些好的原创文章能被更多的人看到,大家可以按照自己的......