数据和同步

ConcurrentHashMap(锁分离):

ConcurrentHashMap使用分段锁技术,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问。ConcurrentHashMap内部分为很多个Segment,每一个Segment拥有一把锁,然后每个Segment(继承ReentrantLock)

HashTable:

是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占。

HashMap:

装箱操作,数组连续存储,Entry

SparseIntArray:

无装箱,两个一维数组存储,内部使用二分查找,所以如果正好是逆序,想插入,效率低

关于同步和锁:

Synchronize:

JVM决定释放,避免死锁,不能决定释放时机,执行结束或抛异常会释放

Lock:

主动调用释放,更加灵活,但可能死锁,需要小心处理,finally释放

关于读写锁参考小例子:https://www.jb51.net/article/79188.htm

猜你喜欢

转载自blog.csdn.net/jianpan_zouni/article/details/84326165
今日推荐