Класс ConcurrentModificationException
- Все реализованные интерфейсы:
Serializable
- Непосредственные известные подклассы:
DirectoryIteratorException
public class ConcurrentModificationException extends RuntimeException
Например, обычно недопустимо, чтобы один поток изменял коллекцию, в то время как другой поток итерируется по ней. В общем случае результаты итерации в таких условиях не определены. Некоторые реализации итераторов (включая все реализации общих коллекций, предоставляемых JRE) могут выбрать бросание этого исключения, если это поведение будет обнаружено. Итераторы, выполняющие это, известны как итераторы с быстрой проверкой, поскольку они быстро и четко завершают работу, а не рискуют произвольным, неопределенным поведением в неопределенный момент времени в будущем.
Обратите внимание, что это исключение не всегда указывает на то, что объект был изменён одновременно другим потоком. Если один поток выполняет последовательность вызовов методов, нарушающих контракт объекта, объект может сгенерировать это исключение. Например, если поток изменяет коллекцию напрямую, в то время как он итерируется по ней с итератором быстрой проверки, итератор сгенерирует это исключение.
Заметим, что поведение с быстрой проверкой не может быть гарантировано, поскольку в общем случае невозможно гарантировать чёткое поведение при одновременном изменении без синхронизации. Операции с быстрой проверкой генерируют исключение ConcurrentModificationException по возможности. Поэтому ошибочно писать программу, которая полагается на это исключение для своей корректности: ConcurrentModificationException должно использоваться только для обнаружения ошибок.
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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, 2021, 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/17/docs/api/java.base/java/util/ConcurrentModificationException.html