ConcurrentHashMap如何实现高效地线程安全?
20个回答
展开全部
Java 提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashtable 等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),我们可以调用 Collections 工具类提供的包装方法,来获取一个同步的包装容器(如 Collections.synchronizedMap),但是它们都是利用非常粗粒度的同步方式,在高并发情况下,性能比较低下。
另外,更加普遍的选择是利用并发包提供的线程安全容器类,它提供了:
各种并发容器,比如 ConcurrentHashMap、CopyOnWriteArrayList。
各种线程安全队列(Queue/Deque),如 ArrayBlockingQueue、SynchronousQueue。
各种有序容器的线程安全版本等。
具体保证线程安全的方式,包括有从简单的 synchronize 方式,到基于更加精细化的,比如基于分离锁实现的 ConcurrentHashMap 等并发实现等。具体选择要看开发的场景需求,总体来说,并发包内提供的容器通用场景,远优于早期的简单同步实现
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
2021-11-14 · 百度认证:河南新华电脑学院有限公司官方账号
关注
展开全部
1.为什么需要 ConcurrentHashMap? Hashtable 本身比较低效,因为它的实现基本就是将 put、get、size 等各种方法加上“synchronized”。简单来说,这就导致了所...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般情况下的话如果说想要实现高校第一县城安全的话这个也是非常不错的可以直接就是从三个方面进行测算所
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每个操作都是原子操作,都带锁的,保证一个成员同一时间只被一个方法调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
项目中经常会有多个线程要访问同一个数据,此时比较常用的办法是用synchronize加锁,CAS去进行安全的累加,去实现多线程场景下的安全的更新一个数据的效果,HashMap是用的比较多,可能就是多个线程同时读写一个HashMap,HashMap是线程不安全的,如果对整个map去synchronized加锁,类似下面这种伪代码也没那么必要。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询