zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    elipse图标注解
    Thrift源码解析--transport
    IDL和生成代码分析
    thrift概述
    less分页阅读
    this与super使用总结(java)
    more分页阅读
    Arrays
    Teigha克隆db的blockTableRecord里面的一个实体
    Teigha的BlockTableRecord获取方法
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/8119060.html
Copyright © 2011-2022 走看看