Интерфейс WatchKey
public interface WatchKey
watchable в WatchService. Ключ наблюдения создается при регистрации объекта watchable в службе наблюдения. Ключ остается valid до:
- Его отмены явным образом путем вызова метода
cancel, или - Отмены неявно, так как объект больше недоступен, или
- Закрытия службы наблюдения
closing.
Ключ наблюдения имеет состояние. При первоначальном создании ключ считается готовым. Когда обнаруживается событие, ключ сигнализируется и помещается в очередь, чтобы его можно было получить, вызвав методы службы наблюдения poll или take. После сигнализации ключ остается в этом состоянии, пока не будет вызван метод reset, чтобы вернуть ключ в состояние готовности. События, обнаруженные, когда ключ находится в состоянии сигнализации, помещаются в очередь, но не приводят к повторному размещению ключа в очередь для извлечения из службы наблюдения. События извлекаются, вызывая метод ключа pollEvents. Этот метод извлекает и удаляет все накопленные события для объекта. При первоначальном создании ключ наблюдения не имеет ожидающих событий. Обычно события извлекаются, когда ключ находится в состоянии сигнализации, что приводит к следующему фрагменту кода:
for (;;) {
// retrieve key
WatchKey key = watcher.take();
// process events
for (WatchEvent<?> event: key.pollEvents()) {
:
}
// reset the key
boolean valid = key.reset();
if (!valid) {
// object no longer registered
}
}
Ключи наблюдения безопасны для использования несколькими потоками одновременно. В тех случаях, когда несколько потоков извлекают сигнализированные ключи из службы наблюдения, следует позаботиться о том, чтобы метод reset вызывался только после обработки событий для объекта. Это гарантирует, что один поток обрабатывает события для объекта в любой момент времени.
- С:
- 1.7
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
cancel() |
Отменяет регистрацию в службе наблюдения. |
boolean |
isValid() |
Определяет, является ли этот ключ наблюдения действительным. |
List<WatchEvent<?>> |
pollEvents() |
Извлекает и удаляет все ожидающие события для этого ключа наблюдения, возвращая List событий, которые были извлечены. |
boolean |
reset() |
Сбрасывает этот ключ наблюдения. |
Watchable |
watchable() |
Возвращает объект, для которого был создан этот ключ наблюдения. |
Подробное описание методов
isValid
boolean isValid()
Ключ наблюдения действителен при создании и остается действительным до отмены или закрытия службы наблюдения.
- Возвращает:
-
trueесли, и только если, этот ключ наблюдения действителен
pollEvents
List<WatchEvent<?>> pollEvents()
List событий, которые были извлечены. Обратите внимание, что этот метод не ожидает, если ожидающих событий нет.
- Возвращает:
- список извлеченных событий; может быть пустым
reset
boolean reset()
Если этот ключ наблюдения был отменен или этот ключ наблюдения уже находится в состоянии готовности, то вызов этого метода не оказывает никакого влияния. В противном случае, если для объекта существуют ожидающие события, этот ключ наблюдения немедленно помещается в очередь в службу наблюдения. Если ожидающих событий нет, то ключ наблюдения переводится в состояние готовности и останется в этом состоянии до обнаружения события или отмены ключа наблюдения.
- Возвращает:
-
trueесли ключ наблюдения действителен и был сброшен, иfalseесли ключ наблюдения не удалось сбросить, потому что он больше неvalid
cancel
void cancel()
pollEvents после отмены ключа. Если этот ключ наблюдения уже был отменен, то вызов этого метода не оказывает никакого влияния. После отмены ключ наблюдения остается навсегда недействительным.
watchable
Watchable watchable()
Так как WatchService предназначен для прямого отображения на средства уведомления о событиях файлов (если доступно), то многие детали о том, как отслеживаются зарегистрированные объекты, зависят от конкретной реализации. Например, при отслеживании изменений в каталоге, а каталог перемещается или переименовывается в файловой системе, нет гарантии, что ключ наблюдения будет отменен, и поэтому объект, возвращаемый этим методом, может больше не быть допустимым путем к каталогу.
- Возвращает:
- объект, для которого был создан этот ключ наблюдения
© 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/nio/file/WatchKey.html