Класс ConcurrentModificationException
- Все реализованные интерфейсы:
Serializable
- Известные прямые подклассы:
DirectoryIteratorException
public class ConcurrentModificationException extends RuntimeException
Например, обычно недопустимо, чтобы один поток изменял коллекцию, пока другой поток выполняет её обход. В общем случае результаты обхода в таких обстоятельствах не определены. Некоторые реализации 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
final void |
addSuppressed |
Добавляет указанное исключение к исключениям, подавленным при передаче этого исключения. |
Throwable |
fillInStackTrace() |
Заполняет трассировку стека выполнения. |
Throwable |
getCause() |
Возвращает причину этого throwable или null, если причина отсутствует или неизвестна. |
String |
getLocalizedMessage() |
Создаёт локализованное описание этого throwable. |
String |
getMessage() |
Возвращает строку с подробным сообщением этого throwable. |
StackTraceElement[] |
getStackTrace() |
Предоставляет программный доступ к информации о трассировке стека, выводимой методом Throwable.printStackTrace(). |
final Throwable[] |
getSuppressed() |
Возвращает массив, содержащий все исключения, подавленные, как правило, оператором try-with-resources при передаче этого исключения. |
Throwable |
initCause |
Устанавливает причину этого throwable в указанное значение. |
void |
printStackTrace() |
Выводит это throwable и его трассировку в стандартный поток ошибок. |
void |
printStackTrace |
Выводит это throwable и его трассировку в указанный поток печати. |
void |
printStackTrace |
Выводит это throwable и его трассировку в указанный объект печати. |
void |
setStackTrace |
Задаёт элементы трассировки стека, которые будут возвращены методом Throwable.getStackTrace() и выведены методами Throwable.printStackTrace() и связанными с ним методами. |
String |
toString() |
Возвращает краткое описание этого throwable. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Определяет, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
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.