如果应用程序中的两个进程正在更新一个java.util.List
对象,那么将引发哪种异常?
答案 0 :(得分:2)
这取决于确切的List
实现(没有java.util.List
个对象,因为它是一个接口)。 ArrayList
声明:
请注意,迭代器的快速失败行为无法得到保证,因为一般来说,在存在非同步并发修改的情况下,不可能做出任何硬性保证。失败快速的迭代器会尽最大努力抛出
ConcurrentModificationException
。因此,编写依赖于此异常的程序以确保其正确性是错误的:迭代器的故障快速行为应仅用于检测错误。
答案 1 :(得分:2)
根据实施情况和确切的时间安排,可能会产生各种各样的影响:
ConcurrentModificationException
HashMap
一次,对于简单的List
实现不太可能,但仍然可能可能的)null
元素。)问题在于,如果发生问题,可靠检测并不比首先防止发生这些问题容易得多,但效果要差得多。因此,理智的方法是在适当时使用并发数据结构和/或同步。
答案 2 :(得分:0)
进程无法共享列表。但是两个线程可以共享一个列表。
某些列表支持并发更新,不会产生异常。其他列表不支持并发更新,可能会产生异常,但这并不是所有操作的保证。
简而言之,如果你想修改List并在另一个线程中使用它,你应该使用线程安全集合。