Класс ConcurrentModificationException
- Все реализованные интерфейсы:
Serializable
- Непосредственные известные подклассы:
DirectoryIteratorException
public class ConcurrentModificationException extends RuntimeException
Например, обычно недопустимо, чтобы один поток изменял коллекцию, в то время как другой поток итерирует по ней. В общем случае результаты итерации в этих обстоятельствах не определены. Некоторые реализации итераторов (включая все реализации общих коллекций, предоставляемых JRE) могут выбрать выброс данного исключения, если это поведение обнаружено. Такие итераторы известны как быстропроверяющие итераторы, так как они быстро и четко терпят неудачу, а не рискуют произвольным, неопределенным поведением в неопределенное время в будущем.
Обратите внимание, что это исключение не всегда указывает на то, что объект был изменён одновременно другим потоком. Если один поток выполняет последовательность вызовов методов, которая нарушает контракт объекта, то объект может выбросить это исключение. Например, если поток изменяет коллекцию напрямую, в то время как он итерирует по коллекции с быстропроверяющим итератором, итератор выбросит это исключение.
Обратите внимание, что гарантия быстропроверяющего поведения не может быть гарантирована, поскольку, вообще говоря, невозможно дать какие-либо жёсткие гарантии при наличии несинхронизированного одновременного изменения. Быстропроверяющие операции выбрасывают ConcurrentModificationException с точки зрения наилучшего усилия. Поэтому было бы неправильно писать программу, которая полагалась бы на это исключение для своей корректности: ConcurrentModificationException следует использовать только для обнаружения ошибок.
- С:
- 1.2
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ConcurrentModificationException() |
Создаёт ConcurrentModificationException без сообщения об ошибке. |
ConcurrentModificationException |
Создаёт ConcurrentModificationException со специфицированным сообщением об ошибке. |
ConcurrentModificationException |
Создаёт новое исключение со специфицированным сообщением об ошибке и причиной. |
ConcurrentModificationException |
Создаёт новое исключение со специфицированной причиной и сообщением об ошибке (cause==null ? null : cause.toString()) (которое обычно содержит класс и сообщение об ошибке cause). |
Краткое описание методов
Методы, объявленные в классе java.lang.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, 2023, 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/21/docs/api/java.base/java/util/ConcurrentModificationException.html