标签:多次 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