ConcurrentHashMap允许一边遍历一边更新,而用HashMap则会报线程安全问题

ConcurrentHashMap线程安全的,允许一边更新、一边遍历,也就是说在对象遍历的时候,也可以进行remove,put操作,且遍历的数据会随着remove,put操作产出变化,而如果用HashMap则会报线程安全问题。

以下例子分别使用HashMap、ConcurrentHashMap、HashTable在遍历的同时删除,

 情况一、使用HashMap进行遍历的同时删除

HashMap不能一边遍历一边更新,否则报异常ConcurrentModificationException

 情况二、使用ConcurrentHashMap进行遍历的同时删除

ConcurrentHashMap不存在该问题,输出结果为0.

 情况三、使用HashTable进行遍历的同时删除

如果用性能较低的安全容器HashTable,也报异常ConcurrentModificationException

原文地址:https://www.cnblogs.com/zwh0910/p/14440248.html