最近做的一个项目里使用了多线程以及LinkedBlockingQueueh和LinkedBlockingDeque等类,在某线程里有一个属于线程实例的全局的HashMap,然后在run方法中会通过map的迭代器进行遍历,然后会修改此Map的数据结构(即长度),然后发现会报ConcurrentModificationException的异常,如图:

wKioL1cO_paAkqTHAAB1LPVcKP4281.png

然后将此Map的初始化对象从HashMap改成ConcurrentHashMap就不会遇到此异常。

ConcurrentHashMap可以支持向map中添加新元素,而HashMap则抛出了ConcurrentModificationException


具体原因可以参考链接:http://www.importnew.com/8162.html