ConcurrentHashMap线程安全的,允许一边更新、一边遍历,也就是说在对象遍历的时候,也可以进行remove,put操作,且遍历的数据会随着remove,put操作产出变化,而如果用HashMap则会报线程安全问题。
以下例子分别使用HashMap、ConcurrentHashMap、HashTable在遍历的同时删除,
情况一、使用HashMap进行遍历的同时删除
HashMap不能一边遍历一边更新,否则报异常ConcurrentModificationException
情况二、使用ConcurrentHashMap进行遍历的同时删除
而ConcurrentHashMap不存在该问题,输出结果为0.
情况三、使用HashTable进行遍历的同时删除
如果用性能较低的安全容器HashTable,也报异常ConcurrentModificationException。