今天在读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标记的最外层循环。
文章探讨了在阅读Java.util.concurrent.ThreadPoolExecutor源码时遇到的retry字段,它用于控制循环行为。retry不是一个关键字,但可以作为标签用于跳转到最外层循环。文章通过示例展示了continueretry和breakretry如何分别用于继续执行最外层循环的下一次遍历和直接跳出最外层循环,强调了它们与常规continue和break的区别。
4368

被折叠的 条评论
为什么被折叠?



