在实际的项目开发中,为了保证程序的健壮性,一些场景在代码执行失败的时候需要进行重试操作。该文章介绍了一个基于JAVA函数式接口实现的重试的工具类。
import com.google.common.collect.Lists;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Slf4j
public class RetryUtil {
private static final List<ScheduleConfig> scheduleConfigList = Lists.newArrayList();
/**
* 初始化重试计划
*/
static {
// 不间隔重试3次
scheduleConfigList.add(new ScheduleConfig(0, TimeUnit.SECONDS, 3));
// 间隔5秒后重试3次
scheduleConfigList.add(new ScheduleConfig(5, TimeUnit.SECONDS, 3));
// 每个1分钟重试一次
scheduleConfigList.add(new ScheduleConfig(1, TimeUnit.MINUTES, Integer.MAX_VALUE));
}
/**
* 函数式接口FunctionHandler.apply调用
* @param handler
* @param <T>
* @return
*/
public static <T> T apply(FunctionHandler handler) {
int i =