有人可以向我解释一下在java中变异集合的后果,这个集合不是线程安全的并且被多个线程使用了吗?
答案 0 :(得分:0)
结果未定义且有些随机。
对于旨在快速失败的JDK集合,您可能会收到ConcurrentModificationException。这是与集合相关的线程安全特有的唯一结果,而不是任何其他类。
通常可能出现线程不安全类的问题:
还有很多其他的可能性,其中没有一个令人愉快。最糟糕的是,当系统受到压力时,这些事情往往最常见于生产中。
简而言之,你可能不想这样做。
答案 1 :(得分:0)
无法保证数据结构的不变量。
例如: 如果线程2在线程1添加到DS线程时执行读取,则可以考虑添加此元素,而线程2没有看到该元素已被添加。
有许多非线程安全的数据结构在多线程环境中仍然可以正常运行(即不抛出),在某些情况下它们甚至可能正常运行(如果你没有做任何事情)写入数据结构)。
要完全理解这个主题,建议探索并发系统中出现的不同类别的错误:这个简短的文档似乎是一个好的开始。
答案 2 :(得分:0)
最常见的结果是看起来有效,但不会一直有效。
这可能意味着您遇到了一个问题
可能会发生什么;
唯一的选择是;