hashmap和ConcurrentHashMap

hashmap市基于table和单向链表

table中存放hash值,table中存放着单向链表,查询时先计算对象hash值,找到table中对应值,然后查询链表。

ConcurrentHashMap继承与Hashmap通过Segment在读写数据时锁部分hashmap的hashtable,而不是锁整个map。

 

Collections.synchronizedMap可以吧任何map转化成安全性的 但是是全部锁。
CAS(Compare-and-Swap 比较和交换)与平台相关,它有三个操作数,内存位置值(V),旧的预期值(A),新值(B)。CAS指令执行时,当V=A时,处理器用B的值跟新V的值,否则不执行。上述的过程是一个原子操作。JDK1.5引入的CAS,它在sun.misc.Unsafe类里面方法提供。里面调用了Native方法。
 
朋友说他们用CAS+redis 解决分布式锁,把内存值和预期值存放到redis中

 

posted @ 2017-09-06 17:47  流氓剑客  阅读(323)  评论(0编辑  收藏  举报