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
方法仅在对象的事件已被处理之后被调用。 这确保一个线程随时处理对象的事件。
Modifier and Type | Method and Description |
---|---|
void |
cancel()
取消对手表服务的注册。
|
boolean |
isValid()
告知这个手表键是否有效。
|
List<WatchEvent<?>> |
pollEvents()
检索并删除此监视键的所有待处理事件,并返回
List 到的事件的List。
|
boolean |
reset()
重置此手表键。
|
Watchable |
watchable()
返回创建该观察键的对象。
|
boolean isValid()
手表钥匙在创建时有效,并保留,直到取消,或其手表服务关闭。
true
如果并且只有这个watch键有效
List<WatchEvent<?>> pollEvents()
List
到的事件的List。
请注意,如果没有事件挂起,该方法不会等待。
boolean reset()
如果该手表键已被取消,或者该手表键已经处于就绪状态,则调用该方法将无效。 否则,如果对象有待处理的事件,那么这个watch键将立即重新排队到watch服务。 如果没有待处理的事件,那么Watch键将进入就绪状态,并且将保持在该状态,直到检测到事件或者取消了监视键。
true
如果手表键有效并且已经被重置,并且如果由于不再重新设置看守钥匙
false
那么
false
void cancel()
pollEvents
方法来检索 。
如果此手表键已被取消,则调用此方法无效。 一旦取消,手表钥匙将永远无效。
Watchable watchable()
由于WatchService
旨在直接映射到本地文件事件通知工具(如果可用的话),那么关于注册对象被监视的许多细节是高度实现特定的。 当观察目录进行更改时,例如,目录在文件系统中移动或重命名,则不能保证手表键将被取消,因此此方法返回的对象可能不再是目录的有效路径。