Class RetryableTask<T>

java.lang.Object
org.miaixz.bus.core.lang.thread.RetryableTask<T>
Type Parameters:
T - 任务结果类型

public class RetryableTask<T> extends Object
重试任务类
Since:
Java 17+
Author:
Kimi Liu
  • Method Details

    • retryForExceptions

      @SafeVarargs public static <T> RetryableTask<T> retryForExceptions(Runnable run, Class<? extends Throwable>... ths)
      重试根据指定的异常,没有返回值
      Type Parameters:
      T - 返回值类型
      Parameters:
      run - 执行的方法 Runnable
      ths - 指定异常 Throwable,匹配任意一个异常时重试
      Returns:
      当前对象
    • retryForExceptions

      @SafeVarargs public static <T> RetryableTask<T> retryForExceptions(Supplier<T> sup, Class<? extends Throwable>... ths)
      重试根据指定的异常,有返回值
      Type Parameters:
      T - 返回值类型
      Parameters:
      sup - 执行的方法 Supplier
      ths - 指定异常 Throwable,匹配任意一个异常时重试
      Returns:
      当前对象
    • retryForPredicate

      public static <T> RetryableTask<T> retryForPredicate(Runnable run, BiPredicate<T,Throwable> predicate)
      重试根据指定的策略,没有返回值
      Type Parameters:
      T - 返回值类型
      Parameters:
      run - 执行的方法 Runnable
      predicate - 策略 BiPredicate,返回true时表示重试
      Returns:
      当前对象
    • retryForPredicate

      public static <T> RetryableTask<T> retryForPredicate(Supplier<T> sup, BiPredicate<T,Throwable> predicate)
      重试根据指定的策略,没有返回值
      Type Parameters:
      T - 返回值类型
      Parameters:
      sup - 执行的方法 Supplier
      predicate - 策略 BiPredicate,返回true时表示重试
      Returns:
      当前对象
    • maxAttempts

      public RetryableTask<T> maxAttempts(long maxAttempts)
      最大重试次数
      Parameters:
      maxAttempts - 次数
      Returns:
      当前对象
    • delay

      public RetryableTask<T> delay(Duration delay)
      重试间隔时间
      Parameters:
      delay - 间隔时间
      Returns:
      当前对象
    • get

      public Optional<T> get()
      获取结果
      Returns:
      返回包装了结果的 Optional对象
    • asyncExecute

      public CompletableFuture<RetryableTask<T>> asyncExecute()
      异步执行重试方法
      Returns:
      返回一个异步对象 CompletableFuture
    • execute

      public RetryableTask<T> execute()
      同步执行重试方法
      Returns:
      当前对象