Java教程

java重试

本文主要是介绍java重试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

重试

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

什么时候重试?

要执行的逻辑比较重要,或者是服务不稳定,或者是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重试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!