我想知道不同步Java中由多个线程修改的集合的最可能的后果(除了数据损坏)。
实际示例中,线程数可以大于10,并且集合(HashSet)可以增长到大约100 000个元素(甚至可能更多)。
谢谢
最佳答案
由于HashSet在内部使用HashMap,因此您可以查看HashMap的putVal方法定义并亲自查看-在执行该方法的任何时候,另一个线程可能会开始这样做。例如,它可以在调整大小时捕获它,这意味着可能会将数据写入旧表,或者将同时创建两个新表。
结果始终是数据损坏,在此类事件发生后甚至可能无法正常工作。
关于java - 不同步Java集合的后果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39634192/