java retry使用

在看ThreadPoolExecutor源码时第一次遇到retry的用法,上网查了一下,大家都是在同一个地方遇到(看来大家的求经之路都差不多...),学习了以后来做个笔记,避免脑容量太小溢出了。

首先retry不是java关键字,只是一种用法,你可以自己去命名标记。

其次retry是一种“移植”跳出循环标记的用法,这个标记常常伴随循环出现,不允许单独使用。之所以说他是“移植”跳出循环标记,是因为他会将跳出循环的方式作用到它标记的那一层,就像把跳出方式移植到外面的循环了一样。

当关键字开始标记在第n层循环时,它会将结束时跟随的关键字作用在第n层。

笔者整理一下用法供大家参考。

  • continue

     public static void main(String[] args) {
        for (int k = 0; k < 2; k++) {
            System.out.println("第1层---"+k);
            retry_continue:
            for (int i = 0; i < 2; i++) {
                System.out.println("第1层---"+k+"第2层---"+i);
                for (int j = 0; j < 5; j++) {
                    System.out.println("第1层---"+k+"第2层---"+i+"第3层---"+j);
                    if (j == 3) {
                        System.out.println("触发标记");
                        continue retry_continue;
                    }
                }
            }
        }
    }
控制台:
第1层---0
第1层---0第2层---0
第1层---0第2层---0第3层---0
第1层---0第2层---0第3层---1
第1层---0第2层---0第3层---2
第1层---0第2层---0第3层---3
触发标记
第1层---0第2层---1
第1层---0第2层---1第3层---0
第1层---0第2层---1第3层---1
第1层---0第2层---1第3层---2
第1层---0第2层---1第3层---3
触发标记
第1层---1
第1层---1第2层---0
第1层---1第2层---0第3层---0
第1层---1第2层---0第3层---1
第1层---1第2层---0第3层---2
第1层---1第2层---0第3层---3
触发标记
第1层---1第2层---1
第1层---1第2层---1第3层---0
第1层---1第2层---1第3层---1
第1层---1第2层---1第3层---2
第1层---1第2层---1第3层---3
触发标记
  • break

    static void retryBreak(){
        for (int k = 0; k < 2; k++) {
            System.out.println("第1层---"+k);
            retry_break:
            for (int i = 0; i < 2; i++) {
                System.out.println("第1层---"+k+"第2层---"+i);
                for (int j = 0; j < 5; j++) {
                    System.out.println("第1层---"+k+"第2层---"+i+"第3层---"+j);
                    if (j == 3) {
                        System.out.println("触发标记");
                        break retry_break;
                    }
                }
            }
        }
    }
    public static void main(String[] args) {
//        retryContinue();

        retryBreak();

    }
控制台:
第1层---0
第1层---0第2层---0
第1层---0第2层---0第3层---0
第1层---0第2层---0第3层---1
第1层---0第2层---0第3层---2
第1层---0第2层---0第3层---3
触发标记
第1层---1
第1层---1第2层---0
第1层---1第2层---0第3层---0
第1层---1第2层---0第3层---1
第1层---1第2层---0第3层---2
第1层---1第2层---0第3层---3
触发标记

猜你喜欢

转载自blog.csdn.net/top_explore/article/details/95035782