Class ConcurrentModificationException

All Implemented Interfaces:
Serializable
Direct Known Subclasses:
DirectoryIteratorException

public class ConcurrentModificationException extends RuntimeException
This exception may be thrown by methods that have detected concurrent modification of an object when such modification is not permissible.

For example, it is not generally permissible for one thread to modify a Collection while another thread is iterating over it. In general, the results of the iteration are undefined under these circumstances. Some Iterator implementations (including those of all the general purpose collection implementations provided by the JRE) may choose to throw this exception if this behavior is detected. Iterators that do this are known as fail-fast iterators, as they fail quickly and cleanly, rather that risking arbitrary, non-deterministic behavior at an undetermined time in the future.

Note that this exception does not always indicate that an object has been concurrently modified by a different thread. If a single thread issues a sequence of method invocations that violates the contract of an object, the object may throw this exception. For example, if a thread modifies a collection directly while it is iterating over the collection with a fail-fast iterator, the iterator will throw this exception.

Note that fail-fast behavior cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification. Fail-fast operations throw ConcurrentModificationException on a best-effort basis. Therefore, it would be wrong to write a program that depended on this exception for its correctness: ConcurrentModificationException should be used only to detect bugs.

Since:
1.2
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a ConcurrentModificationException with no detail message.
    Constructs a ConcurrentModificationException with the specified detail message.
    Constructs a new exception with the specified detail message and cause.
    Constructs a new exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause.
  • Method Summary

    Methods declared in class Throwable

    addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    Modifier and Type
    Method
    Description
    final void
    The specified exception is going to be suppressed in order to give priority to this exception (primary exception) and to be appended to the list of suppressed exceptions.
    Record in the receiver a walkback from the point where this message was sent.
    Answers the cause of this Throwable, or null if there is no cause.
    Answers the extra information message which was provided when the throwable was created.
    Answers the extra information message which was provided when the throwable was created.
    Answers an array of StackTraceElement.
    final Throwable[]
    Returns an array of exceptions suppressed, typically by the automatically generated code from the try-with-resources statement, in order to give priority to this exception (primary exception).
    initCause(Throwable throwable)
    Initialize the cause of the receiver.
    void
    Outputs a printable representation of the receiver's walkback on the System.err stream.
    void
    Outputs a printable representation of the receiver's walkback on the stream specified by the argument.
    void
    Outputs a printable representation of the receiver's walkback on the writer specified by the argument.
    void
    Sets the array of StackTraceElements.
    Answers a string containing a concise, human-readable description of the receiver.

    Methods declared in class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    Modifier and Type
    Method
    Description
    protected Object
    Answers a new instance of the same class as the receiver, whose slots have been filled in with the values in the slots of the receiver.
    boolean
    Compares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.
    protected void
    Deprecated, for removal: This API element is subject to removal in a future version.
    May cause performance issues, deadlocks and hangs.
    final Class<? extends Object>
    Answers the unique instance of java.lang.Class which represents the class of the receiver.
    int
    Answers an integer hash code for the receiver.
    final void
    Causes one thread which is waiting on the receiver to be made ready to run.
    final void
    Causes all threads which are waiting on the receiver to be made ready to run.
    final void
    Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated by notify or notifyAll).
    final void
    wait(long time)
    Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated by notify or notifyAll) or the expiration of the timeout.
    final void
    wait(long time, int frac)
    Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated by notify or notifyAll) or the expiration of the timeout.
  • Constructor Details

    • ConcurrentModificationException

      public ConcurrentModificationException()
      Constructs a ConcurrentModificationException with no detail message.
    • ConcurrentModificationException

      public ConcurrentModificationException(String message)
      Constructs a ConcurrentModificationException with the specified detail message.
      Parameters:
      message - the detail message pertaining to this exception.
    • ConcurrentModificationException

      public ConcurrentModificationException(Throwable cause)
      Constructs a new exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause.
      Parameters:
      cause - the cause (which is saved for later retrieval by the Throwable.getCause() method). (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
      Since:
      1.7
    • ConcurrentModificationException

      public ConcurrentModificationException(String message, Throwable cause)
      Constructs a new exception with the specified detail message and cause.

      Note that the detail message associated with cause is not automatically incorporated in this exception's detail message.

      Parameters:
      message - the detail message (which is saved for later retrieval by the Throwable.getMessage() method).
      cause - the cause (which is saved for later retrieval by the Throwable.getCause() method). (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
      Since:
      1.7