多线程Retry: 解释

今天在看多线程源码时,发现了一个Retry:,之前没有使用过这个符号。不知道干嘛的,就查了一下,然后自己试了一下,知道是干嘛的了。
多线程Retry: 解释
这个符号不是java的关键字,是多线程大师Doug Lea大神自定义的一个符号,可以换成任意的符号,比如 a,b,c之类的都行。这种写法就是自定义一个循环标记。
注意:这种标记只能出现在循环关键字的上方,其他地方写会报编译错误的。

我们做个测试:
多线程Retry: 解释
不加这种标记的话,我们的continue和break就是就近原则,就近continue或者break当前循环。
如上图:continue就是continue循环2,break就是break循环1

下面,我们加上标记,再看一下
多线程Retry: 解释
本次执行,break还是break循环1。但是continue就不会continue循环2了,而是continue循环1,原因就是我们对循环1做了标记。