其实实现synchronized的HashMap非常简单,只需要在操作function前加入synchronized就可以。
比如:
public synchronized V get(Object key)
public synchronized V put(K key, V value)
public synchronized V remove(Object key)
这样便可以把一个object锁住
如果在多个Object下想要锁住多段代码,可以参考下文,把一个class中的代码锁住。
https://www.cnblogs.com/kaituorensheng/p/10079916.html
当然,这样的操作会把一整个HashMap都锁住,所以ConcurrentHashMap就出现了,
ConcurrentHashMap把HashMap默认分为16个小的Segment,然后对于不同线程来讲,有单独的锁。这样的话就不会把整个HashMap锁住了,但是有些操作比如说Size()之类的还是会把整个HashMap给锁住。
当读写或者写写操作在同一个hashMap的时候,才会把segment锁住。
具体请看这篇文章:
网友评论