在线程池源码的时候,ThreadPoolExecutor#addWorker(Runnable firstTask, boolean core)方法中遇到了这样的写法,有点疑惑
retry:
for(;;){
for (;;) {
if (xxx)
break retry;
}
}
代码模拟:场景 :循环5次,内部循环体也是循环5次。当内部循环体变量==7 结束循环
不使用retry
for (int i = 0; i < 5; i++) {
System.out.println("第" + i + "次循环");
for (int j = 5; j < 10; j++) {
if (j == 7) {
break;
}
System.out.println(j);
}
}
结果:
---------------------------------
第0次循环
5
6
第1次循环
5
6
第2次循环
5
6
第3次循环
5
6
第4次循环
5
6
使用retry
retry:
for (int i = 0; i < 5; i++) {
System.out.println("第" + i + "次循环");
for (int j = 5; j < 10; j++) {
if (j == 7) {
break retry;
}
System.out.println(j);
}
}
结果:
---------------------------------
第0次循环
5
6
分析
使用retry 可以结束多个嵌套的循环体,退出到retry标记的同一级for循环
网友评论