Java007 如何实现synchronized的HashMa

2020-04-12  本文已影响0人  攻城狮托马斯

其实实现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锁住。

具体请看这篇文章:

https://www.jianshu.com/p/d0b37b927c48

上一篇 下一篇

猜你喜欢

热点阅读