【java基础】Java的retry标记的使用

说明:其实retry就是一个标记,标记程序跳出循环的时候从哪里开始执行,功能类似于goto。retry一般都是跟随者for循环出现,第一个retry的下面一行就是for循环,而且第二个retry的前面一般是 continue或是 break。

retry本身也可以是其它属性名,如 retry1,retry2等等,遵循java的命名规则可以随意命名。

测试案例:

package com.sxf.test.thread;
/**
 * Retry 的使用
 * @author sxf
 *
 */
public class RetryTest {

    public static void main(String[] args) {
        //testRetry1();
        //testRetry2();
        testRetry3(4);
    }
    
    /**
     * 当i=5的时候,回到a行,程序继续执行,此时i=5,然后继续i++向下执行循环。
     * 最终输出的i的打印结果:0,1,2,3,4,6,7,8,9
     */
    public static void  testRetry1(){
        retry://(a)
        for(int i=0;i<10;i++){
            while(i==5){
                continue retry;
            }
            System.out.println("RetryTest.testRetry()i="+i);
        }
    }
    
    /**
     * 当i=5的时候,回到b行,程序继续执行,此时i=5,还是会进入while循环,因此是一个死循环。
     * 最终输出的i的打印结果:0,1,2,3,4
     */
    public static void  testRetry2(){
        for(int i=0;i<10;i++){
            retry1://(b)
            while(i==5){
                continue retry1;
            }
            System.out.println("RetryTest.testRetry()i="+i);
        }
    }
    
    /**
     *  break retry 配合使用,即便是多层循环,也可以跳出到retry: 标记处的循环。
     * @param a
     * @return
     */
    public static boolean testRetry3(int a){
                 retry:
                for (;;) {
                    System.out.println("RetryTest.testRetry3()retry="+a);
                        if(a==1)
                        return false;

                    for (;;) {
                            if(a==2)
                            return false;
                            if(a==3)
                            break retry;
                            if (a==4)
                            continue retry;
                        // else CAS failed due to workerCount change; retry inner loop
                    }
                }
                System.out.println("RetryTest======>执行最后");
                return false;
    }
}
View Code
原文地址:https://www.cnblogs.com/shangxiaofei/p/8119060.html