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中