美文网首页
锁 - 分段锁

锁 - 分段锁

作者: 面向对象架构 | 来源:发表于2022-11-26 00:24 被阅读0次

    分段锁

    典型的乐观锁:ConcurrentHashMap

    ConcurrentHashMap分段锁代替HashTable的独占锁。

    ConcurrentHashMap 是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结构, 一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素, 每个Segment守护着一个HashEntry数组里的元素,当对HashEntry数组的数据进行修改时,必须首先获得它对应的Segment锁。

    线程安全:ConcurrentHashMap 是一个 Segment 数组, Segment 通过继承ReentrantLock 来进行加锁,所以每次需要加锁的操作锁住的是一个 segment,这样只要保证每个 Segment 是线程安全的,也就实现了全局的线程安全

    ConcurrentSkipListSet 提供的功能类似于TreeSet,能够并发的访问有序的set。因为ConcurrentSkipListSet是基于“跳跃列表(skip list)”实现的,只要多个线程没有同时修改集合的同一个部分,那么在正常读、写集合的操作中不会出现竞争现象。

    相关文章

      网友评论

          本文标题:锁 - 分段锁

          本文链接:https://www.haomeiwen.com/subject/hxzsxdtx.html