美文网首页
Java007 如何实现synchronized的HashMa

Java007 如何实现synchronized的HashMa

作者: 攻城狮托马斯 | 来源:发表于2020-04-12 13:46 被阅读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

相关文章

网友评论

      本文标题:Java007 如何实现synchronized的HashMa

      本文链接:https://www.haomeiwen.com/subject/ekdpmhtx.html