Класс ConcurrentModificationException
- Все реализуемые интерфейсы:
Serializable
- Прямые известные подклассы:
DirectoryIteratorException
public class ConcurrentModificationException extends RuntimeException
Например, как правило, одному потоку не разрешается изменять Collection, пока другой поток выполняет её перебор. В общем случае при таких обстоятельствах результаты перебора не определены. Некоторые реализации Iterator (включая реализации всех универсальных коллекций, предоставляемых JRE) могут выбросить это исключение, если обнаружат такое поведение. Итераторы, поступающие таким образом, называются fail-fast-итераторами, поскольку они быстро и корректно завершают работу, а не допускают произвольное, недетерминированное поведение в неопределённый момент в будущем.
Обратите внимание, что это исключение не всегда означает, что объект был одновременно изменён другим потоком. Если один поток выполняет последовательность вызовов методов, нарушающую контракт объекта, объект может выбросить это исключение. Например, если поток напрямую изменяет коллекцию во время её перебора с помощью fail-fast-итератора, итератор выбросит это исключение.
Обратите внимание, что гарантировать поведение fail-fast невозможно, поскольку, вообще говоря, при наличии несинхронизированных одновременных изменений нельзя дать никаких безусловных гарантий. Операции fail-fast выбрасывают ConcurrentModificationException по мере возможности. Поэтому было бы ошибкой писать программу, корректность которой зависит от этого исключения: ConcurrentModificationException следует использовать только для обнаружения ошибок.
- Начиная с:
- 1.2
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ConcurrentModificationException() |
Создаёт ConcurrentModificationException без подробного сообщения. |
ConcurrentModificationException |
Создаёт ConcurrentModificationException с указанным подробным сообщением. |
ConcurrentModificationException |
Создаёт новое исключение с указанным подробным сообщением и причиной. |
ConcurrentModificationException |
Создаёт новое исключение с указанной причиной и подробным сообщением (cause==null ? null : cause.toString()) (которое обычно содержит класс и подробное сообщение cause. |
Краткое описание методов
Методы, объявленные в классе Throwable
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
Подробное описание конструкторов
ConcurrentModificationException
public ConcurrentModificationException()
ConcurrentModificationException
public ConcurrentModificationException(String message)
ConcurrentModificationException с указанным подробным сообщением.- Параметры:
-
message— подробное сообщение, относящееся к этому исключению.
ConcurrentModificationException
public ConcurrentModificationException(Throwable cause)
(cause==null ? null : cause.toString()) (которое обычно содержит класс и подробное сообщение cause.- Параметры:
-
cause— причина (сохраняется для последующего получения с помощью методаThrowable.getCause()). (Допускается значениеnull, указывающее на то, что причина отсутствует или неизвестна.) - Начиная с:
- 1.7
ConcurrentModificationException
public ConcurrentModificationException(String message, Throwable cause)
Обратите внимание, что подробное сообщение, связанное с cause, не включается автоматически в подробное сообщение этого исключения.
- Параметры:
-
message— подробное сообщение (сохраняется для последующего получения с помощью методаThrowable.getMessage()). -
cause— причина (сохраняется для последующего получения с помощью методаThrowable.getCause()). (Допускается значениеnull, указывающее на то, что причина отсутствует или неизвестна.) - Начиная с:
- 1.7
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ConcurrentModificationException.html