Module  java.base
软件包  java.nio.file

Interface WatchKey



  • public interface WatchKey
    表示watchable对象与WatchService的注册的令牌。

    当观察对象注册到手表服务时,创建手表键。 关键还是valid直到:

    1. 通过调用其cancel方法,或者
    2. 因为对象不再可访问,或者
    3. closing手表服务。

    手表键有一个状态。 最初创建的密钥据说已经准备就绪 当检测到事件时,该信号通知并排队,以便可以通过调用监视服务的polltake方法来检索该密钥。 一旦发信号通知,一键保留在此状态,直到其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旨在直接映射到本地文件事件通知工具(如果可用的话),那么关于注册对象被监视的许多细节是高度实现特定的。 当观察目录进行更改时,例如,目录在文件系统中移动或重命名,则不能保证手表键将被取消,因此此方法返回的对象可能不再是目录的有效路径。

        结果
        该手表键被创建的对象