阅读线程池源码中遇到的retry:
一、break retry:
实验对比:
只使用关键字 break:
public static void t1(){
for (int j = 1; j <= 3; j++) {
System.out.print("\n");
for (int i = 1; i < 10; i++) {
if (i % 5 == 0) {
break ;
}
System.out.print (i +"\t");
}
}
System.out.println("\na-->b");
}
输出结果:
1 2 3 4
1 2 3 4
1 2 3 4
a–>b
使用“标记位:” break retry:
public static void t2(){
retry:
for (int j = 1; j <= 3; j++) {
System.out.print("\n");
for (int i = 1; i < 10; i++) {
if (i % 5 == 0) {
break retry;
}
System.out.print (i +"\t");
}
}
System.out.println("\na-->b");
}
结果:
1 2 3 4
a–>b
可以看到break “标记位” 直接跳转到最外层循环,并且结束了循环继续向下执行。
代码反编译。
continue:
public static void main(String[] args) {
retry:
for (int j = 1; j <= 3; j++) {
System.out.print("\n");
for (int i = 1; i < 7; i++) {
if (i % 5 == 0) {
continue ;
}
System.out.print (i +"\t");
}
}
System.out.println("\na-->b");
}
结果:
1 2 3 4 6
1 2 3 4 6
1 2 3 4 6
a–>b
continue “标记位”
public static void main(String[] args) {
retry:
for (int j = 1; j <= 3; j++) {
System.out.print("\n");
for (int i = 1; i < 7; i++) {
if (i % 5 == 0) {
continue retry;
}
System.out.print (i +"\t");
}
}
System.out.println("\na-->b");
}
运行结果:
1 2 3 4
1 2 3 4
1 2 3 4
a–>b
continue 关键字:跳出本次循环执行体,继续执行循环(如果条件满足)。
continue “标记位” : 跳出循环体,继续执行。