-
public interface WatchKey
表示watchable
对象与WatchService
的注册的令牌。当观察对象注册到手表服务时,创建手表键。 关键还是
valid
直到:手表键有一个状态。 最初创建的密钥据说已经准备就绪 。 当检测到事件时,该信号通知并排队,以便可以通过调用监视服务的
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
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 void
cancel()
取消对手表服务的注册。boolean
isValid()
告知这个手表键是否有效。List<WatchEvent<?>>
pollEvents()
检索并删除此监视键的所有挂起的事件,返回List
到的事件的List
。boolean
reset()
重置此手表键。Watchable
watchable()
返回创建该观察键的对象。
-
-
-
方法详细信息
-
isValid
boolean isValid()
告知这个手表键是否有效。手表钥匙在创建时有效,并保留,直到取消,或其手表服务关闭。
- 结果
-
true
如果并且只有这个手表键是有效的
-
pollEvents
List<WatchEvent<?>> pollEvents()
检索并删除此监视键的所有挂起的事件,返回一个List
的检索事件。请注意,如果没有事件挂起,该方法不会等待。
- 结果
- 检索事件的列表; 可能是空的
-
reset
boolean reset()
重置此手表键。如果该手表键已被取消,或者该手表键已经处于就绪状态,则调用该方法将无效。 否则,如果对象有待处理的事件,那么此watch键将立即重新排队到watch服务。 如果没有待处理的事件,那么Watch键将进入就绪状态,并且将保持在该状态,直到检测到事件或者取消了监视键。
- 结果
-
true
如果手表钥匙是有效的,并已复位,false
,如果因为它不再是手表钥匙不能复位valid
-
cancel
void cancel()
取消对手表服务的注册。 返回时,手表键将无效。 如果watch键入队,等待从watch服务中检索,那么它将保留在队列中,直到它被删除。 待处理的事件(如果有的话)仍然处于待处理状态,并且可以通过在取消密钥后调用pollEvents
方法来检索。如果此手表键已被取消,则调用此方法无效。 一旦取消,手表钥匙将永远无效。
-
watchable
Watchable watchable()
返回创建该观察键的对象。 即使在取消键之后,此方法也将继续返回对象。由于
WatchService
旨在直接映射到本地文件事件通知工具(如果可用的话),那么关于注册对象被监视的许多细节是高度实现特定的。 当观察目录进行更改时,例如,目录在文件系统中移动或重命名,则不能保证手表键将被取消,因此此方法返回的对象可能不再是目录的有效路径。- 结果
- 该手表键被创建的对象
-
-