Class Timeout

java.lang.Object
org.miaixz.bus.core.io.timout.Timeout
Direct Known Subclasses:
AssignTimeout, AsyncTimeout

public class Timeout extends Object
在放弃一项任务之前要花多少时间的策略 当一个任务 超时时,它处于未指定的状态,应该被放弃 例如,如果从源读取超时,则应关闭该源并 稍后应重试读取 如果向接收器写入超时,也是一样 适用规则:关闭洗涤槽,稍后重试
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • NONE

      public static final Timeout NONE
      既不跟踪也不检测超时的空超时。在不需要超时 的情况下使用它,例如在操作不会阻塞的实现中
  • Constructor Details

    • Timeout

      public Timeout()
      构建
  • Method Details

    • timeout

      public Timeout timeout(long timeout, TimeUnit unit)
      最多等待 timeout 时间,然后中止操作。 使用每个操作超时意味着只要向前推进,任何操作序列都不会失败。
      Parameters:
      timeout - 超时时间
      unit - 时间单位
      Returns:
      Timeout
    • timeoutNanos

      public long timeoutNanos()
      返回以纳秒为单位的超时时间,或 0 表示无超时。
    • hasDeadline

      public boolean hasDeadline()
      如果启用了截止期限,则返回 true
    • deadlineNanoTime

      public long deadlineNanoTime()
      返回截止期限的 System.nanoTime()
      Throws:
      IllegalStateException - 如果没有设定截止时间
    • deadlineNanoTime

      public Timeout deadlineNanoTime(long deadlineNanoTime)
      设置达到截止期限的 System.nanoTime() 所有操作必须在此时间之前完成。使用截止期限来设置一系列操作所花费时间的最大限度。
    • deadline

      public final Timeout deadline(long duration, TimeUnit unit)
      设定现在加上duration 时间的截止时间
      Parameters:
      duration - 期间
      unit - 时间单位
      Returns:
      Timeout
    • clearTimeout

      public Timeout clearTimeout()
      清除超时
    • clearDeadline

      public Timeout clearDeadline()
      清除最后期限
    • throwIfReached

      public void throwIfReached() throws IOException
      如果已达到截止时间或当前线程已中断,则抛出 InterruptedIOException。 此方法不检测超时;应实施超时以异步中止正在进行的操作
      Throws:
      IOException
    • waitUntilNotified

      public final void waitUntilNotified(Object monitor) throws InterruptedIOException
      等待 monitor 直到收到通知。 如果线程中断或在 monitor 收到通知之前超时,则抛出 InterruptedIOException。 调用者必须在 monitor 上同步。
      Parameters:
      monitor - 监视器
      Throws:
      InterruptedIOException - 异常