Class AsyncTimeout

java.lang.Object
org.aoju.bus.core.io.timout.Timeout
org.aoju.bus.core.io.timout.AsyncTimeout

public class AsyncTimeout extends Timeout
此超时使用后台线程在超时发生时精确地执行操作 用它来 在本地不支持超时的地方实现超时,例如对阻塞的套接字操作.
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • AsyncTimeout

      public AsyncTimeout()
  • Method Details

    • enter

      public final void enter()
      调用者应该在执行超时工作之前调用enter(),然后调用exit() exit()的返回值指示是否触发超时。注意,对timedOut()的调用是异步的, 可以在exit()之后调用
    • exit

      public final boolean exit()
      如果超时发生,则返回true
      Returns:
      the true/false
    • timedOut

      protected void timedOut()
      当对enter()exit()的调用之间的时间超过超时时,watchdog线程将调用它
    • sink

      public final Sink sink(Sink sink)
      返回一个委托给sink的新缓冲接收器,使用它来实现超时。 如果timedOut()被覆盖以中断sink的当前操作,那么这是最有效的
      Parameters:
      sink - 缓冲接收器
      Returns:
      新缓冲接收器
    • source

      public final Source source(Source source)
      返回一个委托给source的新源,使用它来实现超时。 如果timedOut()被覆盖以中断sink的当前操作,那么这是最有效的
      Parameters:
      source - 源
      Returns:
      新源
    • newTimeoutException

      protected IOException newTimeoutException(IOException cause)
      返回IOException表示超时。默认情况下,该方法返回InterruptedIOException。 如果cause非空,则将其设置为返回异常的原因
      Parameters:
      cause - 异常
      Returns:
      异常信息