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


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

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

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

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

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

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

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

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM