今天在读java.util.concurrent.ThreadPoolExecutor
类的源码时,发现线程池在添加工作线程时用到了retry
这个字段,记录一下用法。
retry
不是一个关键字,所以输入retry不会有任何提示,就是continue或者break跳转到哪里的一个标记点。retry
不是关键字,所以可以用任何合法的变量名表示,比如zhangsan、hello
都可以。
continue retry
:
@Test
public void test1() {
retry:
for (int i = 0; i < 3; i++) {
for (int j = 5; j < 8; j++) {
System.out.println(i + "->" + j);
if (j == 6) {
continue retry;
}
}
}
}
0->5
0->6
1->5
1->6
2->5
2->6
continue retry
可以跳到retry标记的最外层循环,继续执行最外层循环的下一次遍历。
break retry
:
@Test
public void test2() {
retry:
for (int i = 0; i < 3; i++) {
for (int j = 5; j < 8; j++) {
System.out.println(i + "->" + j);
if (j == 6) {
break retry;
}
}
}
}
0->5
0->6
break retry
可以直接跳出retry标记的最外层循环。
总结:
continue和break
只能跳到或跳出当前循环;而continue retry和break retry
可以直接跳到或跳出retry标记的最外层循环。