研究ThreadPoolExecutor源码中发现,addWorker方法有一个retry:的写法,第一次见,所以鼓捣了一下。
retry并非关键字,这里类似goto语法中的标记位置。
这里主要是为了跳出多层循环使用的,单层循环break和continue本身就可以实现。多层循环就需要在跳出的循环体之前做上标记flag:,然后内层循环跳出用break flag;或者continue flag即可。
注意:这种写法==必须写在循环体上面。紧挨着!==中间不允许穿插任何其他代码。
举个例子:
flag1:
for(int i=0;i<10;i++)
{
System.out.println("外部循环"+i);
for(int j=0;j<10;j++)
{
System.out.println("内部循环"+j);
if(j==5)break flag1;
}
}
平常的写法break只会跳出内部循环,继续执行外部循环。
break flag1;则会跳出flag1之后的循环