Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface WatchService extends Closeable
A Watchable
объект регистрируется в службе часов, вызывая register
метод, возвращаясь a WatchKey
представлять регистрацию. Когда событие для объекта обнаруживается, ключ сообщается, и если не в настоящий момент сообщенный, это ставится в очередь к службе часов так, чтобы это могло быть получено потребителями, которые вызывают poll
или take
методы, чтобы получить ключи и события процесса. Как только события были обработаны, потребитель вызывает ключ reset
метод, чтобы сбросить ключ, который позволяет ключу быть сообщенным и повторно поставленным в очередь с дальнейшими событиями.
Регистрация со службой часов отменяется, вызывая ключ cancel
метод. Ключ, который ставится в очередь в то время, когда он отменяется, остается в очереди, пока он не получается. В зависимости от объекта ключ может быть отменен автоматически. Например, предположите, что каталог наблюдается, и служба часов обнаруживает, что это было удалено, или ее файловая система больше не доступна. Когда ключ отменяется этим способом, это сообщается и ставится в очередь, если не в настоящий момент сообщенный. Гарантировать, что потребитель уведомляется возвращаемое значение от reset
метод указывает, допустим ли ключ.
Служба часов безопасна для использования многократными параллельными потребителями. Чтобы гарантировать, что только один потребитель обрабатывает события для определенного объекта в любое время тогда, заботятся, должен быть взят, чтобы гарантировать что ключ reset
метод только вызывается после того, как его события были обработаны. close
метод может быть вызван в любое время, чтобы закрыть службу, вызывающую любым потокам, ожидающим получать ключи, бросать ClosedWatchServiceException
.
Файловые системы могут сообщить о событиях быстрее, чем они могут быть получены или обработаны, и реализация может наложить неуказанный предел на число событий, которые это может накопить. Где реализация сознательно отбрасывает события тогда, она устраивает ключ pollEvents
метод, чтобы возвратить элемент с типом события OVERFLOW
. Это событие может использоваться потребителем в качестве триггера, чтобы вновь исследовать состояние объекта.
Когда событие, как сообщают, указывает, что файл в наблюдаемом каталоге был изменен тогда нет никакой гарантии, что программа (или программы), которые изменили файл, завершились. Забота должна быть проявлена, чтобы скоординировать доступ с другими программами, которые могут обновлять файл. FileChannel
класс определяет методы, чтобы заблокировать области файла против доступа другими программами.
Реализация, которая наблюдает события от файловой системы, предназначается, чтобы отобразиться непосредственно на собственном средстве уведомления о событии файла где доступный, или использовать примитивный механизм, такой как опрос, когда собственное средство не доступно. Следовательно, многие из деталей о том, как события обнаруживаются, их своевременность, и сохраняется ли их упорядочивание, являются чрезвычайно определенной реализацией. Например, когда файл в наблюдаемом каталоге изменяется тогда, он может привести к синглу ENTRY_MODIFY
событие в некоторых реализациях, но несколько событий в других реализациях. Недолгие файлы (значение файлов, которые удаляются очень быстро после того, как они создаются) не могут быть обнаружены примитивными реализациями, которые периодически опрашивают файловую систему, чтобы обнаружить изменения.
Если наблюдаемый файл не располагается на локальном устройстве хранения данных тогда, это - реализация, определенная, если изменения к файлу могут быть обнаружены. В частности не требуется, что обнаруживаются изменения к файлам, выполненным в удаленных системах.
FileSystem.newWatchService()
Модификатор и Тип | Метод и Описание |
---|---|
void |
close()
Завершения эта служба часов.
|
WatchKey |
poll()
Получает и удаляет следующий ключ часов, или
null если ни один не присутствует. |
WatchKey |
poll(long timeout, TimeUnit unit)
Получает и удаляет следующий ключ часов, ожидая в случае необходимости до указанного времени ожидания, если ни один еще не присутствует.
|
WatchKey |
take()
Получает и удаляет следующий ключ часов, ожидая, если ни один еще не присутствует.
|
void close() throws IOException
Если поток в настоящий момент блокируется в take
или poll
методы, ожидающие ключа, который будет поставлен в очередь тогда, это сразу получает a ClosedWatchServiceException
. Любые допустимые ключи, связанные с этой службой часов, invalidated
.
После того, как служба часов закрывается, дальше попытайтесь вызвать операции на нее, бросит ClosedWatchServiceException
. Если эта служба часов уже закрывается, затем вызывая этот метод, не имеет никакого эффекта.
close
в интерфейсе AutoCloseable
close
в интерфейсе Closeable
IOException
- если ошибка ввода-вывода происходитWatchKey poll()
null
если ни один не присутствует.null
ClosedWatchServiceException
- если эта служба часов закрываетсяWatchKey poll(long timeout, TimeUnit unit) throws InterruptedException
timeout
- как ожидать перед отказом в модулях модуляunit
- a TimeUnit
определение, как интерпретировать параметр тайм-аутаnull
ClosedWatchServiceException
- если эта служба часов закрывается, или она закрывается, ожидая следующего ключаInterruptedException
- если прервано, ожидаяWatchKey take() throws InterruptedException
ClosedWatchServiceException
- если эта служба часов закрывается, или она закрывается, ожидая следующего ключаInterruptedException
- если прервано, ожидая
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.