hashMap 的多线程安全问题- ConcurrentModificationException

以HashMap为例,它不安全,什么叫不安全。简单理解就是多线程读写可能是脏数据,比如你在A线程读,B线程写了一个新数据,而A线程却不知道。可怕。。
之前有一个奔溃是java.util.ConcurrentModificationException,就是线程不安全的操作,不过更专业的说法是快速失败。HashMap在读的过程中,如果写操作,jdk在处理这种情况是有一个判断的:
即迭代器迭代,检测当前集合大小,如果大小不符合预期则抛出异常达到快速失败的效果。
例如迭代器迭代开始时候是4个key,中间发现变成5个key,这时候迭代器直接失败抛出异常,因为它认为迭代中是读操作,至始至终都应该是不变的集合才能保障效果

posted @ 2021-12-20 11:41  aspirant  阅读(248)  评论(0编辑  收藏  举报