All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.niuable.utils.TryKit Maven / Gradle / Ivy

package cn.niuable.utils;

/**
 * 尝试某个操作
 * @author 王维
 *
 * 
 * www.51xlxy.com
 * 2018-05-23
 * [email protected]
 * All rights Reserved, Designed By WangWei
 *         
*/ public class TryKit { /** * 尝试容器 * @param 自定义返回值类型 */ public abstract static class BaseTry { /** * 执行方法 * @return 自定义返回值 */ public abstract T run(); } /** * 开始尝试操作 * @param doTry 尝试操作对象 * @param millis 尝试失败后进行下一次尝试的间隔时间 * @param maxRetry 最大尝试次数 * @param 自定义返回值类型 * @return 自定义返回值 */ public static T start(BaseTry doTry, long millis, int maxRetry) { if (maxRetry < 1){ throw new IllegalArgumentException("尝试次数错误"); } maxRetry--; try { return doTry.run(); } catch (Exception e) { //没有尝试次数,则抛出异常 if(maxRetry < 1){ throw new RuntimeException(e); } try { if (millis > 0) { Thread.sleep(millis); } return start(doTry, millis, maxRetry); } catch (InterruptedException e1) { throw new RuntimeException(e1); } } } /** * 开始尝试操作 * @param doTry 尝试操作对象 * @param millis 尝试失败后进行下一次尝试的间隔时间 * 默认尝试3次 * @param 自定义返回值类型 * @return 自定义返回值 */ public static T start(BaseTry doTry, long millis) { return start(doTry, millis, 3); } /** * * 开始尝试操作 * @param doTry 尝试操作对象 * @param maxRetry 最大尝试次数 * 默认立即进行下一次尝试 * @param 自定义返回值类型 * @return 自定义返回值 */ public static T start(BaseTry doTry, int maxRetry) { return start(doTry, 0, maxRetry); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy