public class ConcurrentModificationException
extends RuntimeException
java.lang.Object | ||||
↳ | java.lang.Throwable | |||
↳ | java.lang.Exception | |||
↳ | java.lang.RuntimeException | |||
↳ | java.util.ConcurrentModificationException |
当这种修改不被允许时,可能会由检测到对象的并发修改的方法引发此异常。
例如,一个线程在另一个线程遍历它时修改一个集合通常是不允许的。 一般来说,在这些情况下迭代的结果是不确定的。 某些迭代器实现(包括由JRE提供的所有通用集合实现的实现)可能会选择在检测到此行为时抛出此异常。 这样做的迭代器被称为快速迭代器,因为它们快速且干净地失败,而在将来未定的时间冒着任意的,非确定性的行为冒险。
请注意,这个异常并不总是表示一个对象已被另一个线程同时修改。 如果单个线程发出违反对象合约的一系列方法调用,则该对象可能会抛出此异常。 例如,如果一个线程在使用快速迭代器迭代集合的同时直接修改集合,迭代器将抛出此异常。
请注意,无法保证故障快速行为,因为一般来说,在出现未同步的并发修改时不可能做出任何硬性保证。 ConcurrentModificationException
的快速失败操作会ConcurrentModificationException
。 因此,编写一个依赖于此异常的程序是正确的: ConcurrentModificationException
应仅用于检测错误。
也可以看看:
Public constructors |
|
---|---|
ConcurrentModificationException() 构造没有详细消息的ConcurrentModificationException。 |
|
ConcurrentModificationException(String message) 用指定的详细信息构造一个 |
|
ConcurrentModificationException(Throwable cause) 构造具有指定的原因和详细消息的新异常 |
|
ConcurrentModificationException(String message, Throwable cause) 用指定的详细信息和原因构造一个新的异常。 |
Inherited methods |
|
---|---|
From class java.lang.Throwable
|
|
From class java.lang.Object
|
ConcurrentModificationException ()
构造没有详细消息的ConcurrentModificationException。
ConcurrentModificationException (String message)
用指定的详细信息构造一个 ConcurrentModificationException
。
Parameters | |
---|---|
message |
String : the detail message pertaining to this exception. |
ConcurrentModificationException (Throwable cause)
构造具有指定的原因和详细消息的新异常 (cause==null ? null : cause.toString())
(它通常包含的类和详细消息 cause
。
Parameters | |
---|---|
cause |
Throwable : the cause (which is saved for later retrieval by the getCause() method). (A null value is permitted, and indicates that the cause is nonexistent or unknown.) |
ConcurrentModificationException (String message, Throwable cause)
用指定的详细信息和原因构造一个新的异常。
请注意,与 cause
相关的详细消息 不会自动包含在此例外的详细消息中。
Parameters | |
---|---|
message |
String : the detail message (which is saved for later retrieval by the getMessage() method). |
cause |
Throwable : the cause (which is saved for later retrieval by the getCause() method). (A null value is permitted, and indicates that the cause is nonexistent or unknown.) |