标签:多次 second 执行 inter get 睡眠 ring eof str
直接上代码:
public class TaskUtil {
/**
* 多次尝试执行任务,直到成功或次数用完
* @param task 任务
* @param times 循环次数
* @param millisecond 两个任务之间休眠时间(单位:毫秒)
* @param <T>
* @return
*/
public static <T> T foreachTask(Supplier<T> task, int times, long millisecond){
T rs = null;
for (int i = 0; i < times; i++){
rs = task.get();
if(rs instanceof String){
//成功,则中断循环
if(!StringUtils.isEmpty(rs)){
break;
}
}else {
//成功,则中断循环
if(rs != null){
break;
}
}
//不是最后一次 - 需要睡眠
if(i != times -1){
try {
Thread.sleep(millisecond);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
return rs;
}
}
调用示例:
String rs = TaskUtil.foreachTask(() -> {
// TODO: 2021/4/29
//失败要归还 null 或 ""
return null;
},
3, 1000);
标签:多次 second 执行 inter get 睡眠 ring eof str
原文地址:https://www.cnblogs.com/by-lhc/p/14719527.html