ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java重试

2022-07-15 23:03:09  阅读:133  来源: 互联网

标签:java int 重试 retryDoSomething static 多试 public


重试

重试,就是多试几次。一次不成功,多试几次说不定就成功了。

什么时候重试?

要执行的逻辑比较重要,或者是服务不稳定,或者是Rpc远程调服务有时不成功,都可以使用重试。

示例代码

public class RetryTest {
    private static final Logger log = Logger.getLogger(RetryTest.class);

    public static void main(String[] args) throws InterruptedException {
        retryDoSomething();
    }

    public static void retryDoSomething() throws InterruptedException {
        log.info("retryDoSomething start.");
        //重试次数
        int maxTimes = 5;
        //每次重试间隔时间
        int interval = 500;

        for (int i = 0; i <= maxTimes; i++) {
            boolean isOk = doSomething();
            //成功了就停止
            if (isOk ) {
                break;
            }
            Thread.sleep(interval);
        }
        log.info("retryDoSomething end.");
    }


    /**
     * 执行逻辑,成功就返回 true,报错返回 false
     *
     * @return
     */
    public static boolean doSomething() {
        try {
            //执行逻辑
            doSth();
        } catch (Exception e) {
            log.error("service.doSomething() error.", e);
            return false;
        }
        return true;
    }

    /**
     * 执行逻辑的方法
     *
     * 以下是示例,可以将示例替换成自己的逻辑
     *
     */
    public static void doSth() {
        Random random = new Random();
        //随机产生一个[0-100]之间的随机数,由于是随机,每次执行的结果可能不一样
        int num = random.nextInt(101);
        if (num % 5 ==0) {
            //如果是5的倍数就不报错
            log.info("doSth num:"+ num);
        } else {
            //模拟失败,抛异常
            throw new NumberFormatException();
        }

    }
}

标签:java,int,重试,retryDoSomething,static,多试,public
来源: https://www.cnblogs.com/expiator/p/16483047.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有