HashMap并发出现的问题

来源:互联网 发布:java开发视频网站源码 编辑:程序博客网 时间:2024/05/20 15:39

死循环

并发就是不止一个线程在执行对HashMap的操作,例如添加,当HashMap中的元素超过了阀值,那么就需要扩容;在并发的环境中就可能出现两个以上的线程同时进行扩容操作,这时候就有可能线程1刚取到e及e.next的时候被挂起了,而线程2趁机插足把整个扩容的过程完成了,当线程1再拿到资源时继续执行完成后就可能出现 a=e.next;e=a.next 构成了闭环,死循环出现了。

语言很苍白,少待以后加代码及图

附上两个链接参考
HashMap多线程并发问题分析
HashMap在并发下可能出现的问题分析

解决方案

HashTable
Collections.synchronizedMap
ConcurrentHashMap

原创粉丝点击