java里面的retry:

今天在看java线程池的源码的时候,看到ThreadPoolExecutor里面的addWork()方法有下图中的这种写法,因为之前没有见过,所以好奇研究了一下

首先这个retry不是java里面的关键字,所以那个retry可以用任何合法的变量名替换,例如hello:等。
下面我们再来看一下这个到底有什么用

public class RetryDemo {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 0; i < 2; i++){
            for (int j = 0; j < 5; j++){
                count++;
                System.out.print(count+" ");
            }
        }
    }
}

上面这段代码,会打印1~10一共10个数

public class RetryDemo {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 0; i < 2; i++){
            for (int j = 0; j < 5; j++){
                count++;
                if (count == 3){
                    break;
                }
                System.out.print(count+" ");
            }
        }
    }
}

我们在里面加一个条件判断,当count=3的时候就跳出当前循环,所以只打印1245678。
我们再看一下下面的代码会打印什么

public class RetryDemo {
    public static void main(String[] args) {
        int count = 0;
        retry:
        for (int i = 0; i < 2; i++){
            for (int j = 0; j < 5; j++){
                count++;
                if (count == 3){
                    break retry;
                }
                System.out.print(count+" ");
            }
        }
    }
}

我们再代码里面加了一个retry:当count==3的时候break retry; 聪明的你可能已经猜到了,这段代码只会打印12。break retry;是跳出了整个的两层循环。

这里我的理解是这个retry相当于是一个标记符,标识的是break的跳转位置。当然continue也是同样的道理。

有兴趣的朋友可以试一下continue会发生什么样的事情,这里我就不演示了。

纸上得来终觉浅,有些地方我可能表达不太清楚,自己尝试在自己项目里面运行一下上面代码,相信能加强你的理解。

如果我有讲的不对的地方,欢迎各位大佬评论指出,也可以加微信一起探讨

你可能感兴趣的:(java里面的retry:)