Spec-Zone.ru › OpenJDK 27

Класс ConcurrentModificationException

java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.util.ConcurrentModificationException
Все реализованные интерфейсы:
Serializable
Известные прямые подклассы:
DirectoryIteratorException
public class ConcurrentModificationException extends RuntimeException
Это исключение может быть выброшено методами, обнаружившими параллельное изменение объекта, если такое изменение недопустимо.

Например, обычно недопустимо, чтобы один поток изменял коллекцию, пока другой поток выполняет её обход. В общем случае результаты обхода в таких обстоятельствах не определены. Некоторые реализации Iterator (в том числе реализации всех универсальных коллекций, предоставляемых JRE) могут выбрасывать это исключение при обнаружении такого поведения. Итераторы, которые делают это, называются итераторами fail-fast, поскольку они быстро и корректно завершают работу, вместо того чтобы допускать произвольное, недетерминированное поведение в неопределённый момент в будущем.

Обратите внимание, что это исключение не всегда означает, что объект был изменён параллельно другим потоком. Если один поток выполняет последовательность вызовов методов, нарушающую контракт объекта, объект может выбросить это исключение. Например, если поток напрямую изменяет коллекцию, одновременно выполняя её обход с помощью итератора fail-fast, итератор выбросит это исключение.

Обратите внимание, что поведение fail-fast нельзя гарантировать, поскольку, вообще говоря, невозможно дать какие-либо строгие гарантии при наличии несинхронизированного параллельного изменения. Операции fail-fast выбрасывают ConcurrentModificationException при первой возможности. Поэтому было бы неправильно писать программу, корректность которой зависит от этого исключения: ConcurrentModificationException следует использовать только для обнаружения ошибок.

Начиная с:
1.2
См. также:
  • Collection
  • Iterator
  • Spliterator
  • ListIterator
  • Vector
  • LinkedList
  • HashSet
  • Hashtable
  • TreeMap
  • AbstractList
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
ConcurrentModificationException()
Создаёт ConcurrentModificationException без подробного сообщения.
ConcurrentModificationException(String message)
Создаёт ConcurrentModificationException с указанным подробным сообщением.
ConcurrentModificationException(String message, Throwable cause)
Создаёт новое исключение с указанным подробным сообщением и причиной.
ConcurrentModificationException(Throwable cause)
Создаёт новое исключение с указанной причиной и подробным сообщением (cause==null ? null : cause.toString()) (которое обычно содержит класс и подробное сообщение cause.

Краткое описание методов

Методы, объявленные в классе Throwable

addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
Модификатор и тип Метод Описание
final void addSuppressed(Throwable exception)
Добавляет указанное исключение к исключениям, подавленным при передаче этого исключения.
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 cause)
Устанавливает причину этого throwable в указанное значение.
void printStackTrace()
Выводит это throwable и его трассировку в стандартный поток ошибок.
void printStackTrace(PrintStream s)
Выводит это throwable и его трассировку в указанный поток печати.
void printStackTrace(PrintWriter s)
Выводит это throwable и его трассировку в указанный объект печати.
void setStackTrace(StackTraceElement[] stackTrace)
Задаёт элементы трассировки стека, которые будут возвращены методом Throwable.getStackTrace() и выведены методами Throwable.printStackTrace() и связанными с ним методами.
String toString()
Возвращает краткое описание этого throwable.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Определяет, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание конструкторов

ConcurrentModificationException

public ConcurrentModificationException()
Создаёт 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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API