Spec-Zone.ru › OpenJDK 25

Интерфейс WatchKey

public interface WatchKey
Токен, представляющий регистрацию объекта watchable в WatchService.

Ключ наблюдения создаётся при регистрации объекта наблюдения в службе наблюдения. Ключ остаётся valid до тех пор, пока:

  1. Он не будет отменён явным вызовом метода cancel, или
  2. Не будет отменён неявно, поскольку объект станет недоступен, или
  3. Пока служба наблюдения не будет 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 предназначен для непосредственного взаимодействия с механизмом уведомления о событиях файловой системы (если он доступен), многие подробности наблюдения за зарегистрированными объектами в значительной степени зависят от реализации. Например, при отслеживании изменений в каталоге, если каталог перемещён или переименован в файловой системе, нет гарантии, что ключ наблюдения будет отменён, поэтому объект, возвращаемый этим методом, может больше не указывать на допустимый путь к каталогу.

Возвращает:
объект, для которого был создан этот ключ наблюдения

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/file/WatchKey.html

Spec-Zone.ru

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