map(2)
hashmap和hashtable,
一个线程不安全,一个线程安全,
一个key可以存储一个null值,value可以存储null值,一个key和value都不允许存储null值,
现在基本不用hashtable了使用线程安全的话可以使用concurrenthashmap,底层也是数组+链表或红黑树。
concurrenthashmap乐观锁悲观锁都有用到,当插入该数组中是空的时候使用volatile和cas(乐观锁),当插入的位置已有值的时候,使用synchronized(悲观锁),判断是否同一个key,同的话新值替换旧值,不是同一个key,直接添加到链表的前端。
#学习笔记#
一个线程不安全,一个线程安全,
一个key可以存储一个null值,value可以存储null值,一个key和value都不允许存储null值,
现在基本不用hashtable了使用线程安全的话可以使用concurrenthashmap,底层也是数组+链表或红黑树。
concurrenthashmap乐观锁悲观锁都有用到,当插入该数组中是空的时候使用volatile和cas(乐观锁),当插入的位置已有值的时候,使用synchronized(悲观锁),判断是否同一个key,同的话新值替换旧值,不是同一个key,直接添加到链表的前端。
#学习笔记#