Spec-Zone.ru › OpenJDK 24

Интерфейс 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 вызывался только после обработки событий для объекта. Это гарантирует, что в любой момент времени один поток обрабатывает события для объекта.

Since:
1.7

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

Модификатор и тип Метод Описание
void cancel()
Отменяет регистрацию в службе наблюдения.
boolean isValid()
Указывает, является ли этот ключ наблюдения действительным.
List<WatchEvent<?>> pollEvents()
Извлекает и удаляет все ожидающие события для этого ключа наблюдения, возвращая a List событий, которые были извлечены.
boolean reset()
Сбрасывает этот ключ наблюдения.
Watchable watchable()
Возвращает объект, для которого был создан этот ключ наблюдения.

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

isValid

boolean isValid()
Указывает, является ли этот ключ наблюдения действительным.

Ключ наблюдения является действительным при создании и остается действительным до отмены или закрытия службы наблюдения.

Returns:
true если и только если этот ключ наблюдения действителен

pollEvents

List<WatchEvent<?>> pollEvents()
Извлекает и удаляет все ожидающие события для этого ключа наблюдения, возвращая a List событий, которые были извлечены.

Обратите внимание, что этот метод не ожидает, если ожидающих событий нет.

Returns:
список извлеченных событий; может быть пустым

reset

boolean reset()
Сбрасывает этот ключ наблюдения.

Если этот ключ наблюдения был отменен или уже находится в состоянии готовности, то вызов этого метода не имеет эффекта. В противном случае, если для объекта есть ожидающие события, то этот ключ наблюдения немедленно возвращается в очередь службы наблюдения. Если ожидающих событий нет, то ключ наблюдения переходит в состояние готовности и останется в этом состоянии до обнаружения события или отмены ключа наблюдения.

Returns:
true если ключ наблюдения действителен и сброшен, и false если ключ наблюдения не может быть сброшен, потому что он больше не valid

cancel

void cancel()
Отменяет регистрацию в службе наблюдения. После возвращения ключ наблюдения будет недействительным. Если ключ наблюдения находится в очереди, ожидая извлечения из службы наблюдения, то он останется в очереди до удаления. Ожидающие события, если таковые имеются, остаются ожидающими и могут быть извлечены, вызвав метод pollEvents после отмены ключа.

Если этот ключ наблюдения уже был отменен, то вызов этого метода не имеет эффекта. После отмены ключ наблюдения остается навсегда недействительным.

watchable

Watchable watchable()
Возвращает объект, для которого был создан этот ключ наблюдения. Этот метод продолжит возвращать объект даже после отмены ключа.

Так как WatchService предназначен для прямого отображения на средство уведомления о событиях файлов нативных систем (если доступно), то многие подробности о том, как наблюдаются зарегистрированные объекты, сильно зависят от реализации. Например, при наблюдении за изменениями в каталоге, и если каталог перемещен или переименован в файловой системе, нет гарантии, что ключ наблюдения будет отменен, и поэтому объект, возвращаемый этим методом, может больше не быть допустимым путем к каталогу.

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/file/WatchKey.html

Spec-Zone.ru

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