java线程池的代码中的retry:跳出循环

it2022-05-05  139

最近在看线程池的代码时候发现一块特殊的循环:

这个retry是怎么一回事?具体用了一个测试用例进行:

首先是一个最原始的循环:

for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { System.out.println(i+" "+j); if(j ==3) { continue;//这里调用continue和不调用的打印结果是一致的 } } } 打印结果 0 0 0 1 0 2 0 3 0 4 1 0 1 1 1 2 1 3 1 4 2 0 2 1 2 2 2 3 2 4 3 0 3 1 3 2 3 3 3 4 4 0 4 1 4 2 4 3 4 4

 

因为continue是遇到也会继续, 但是加上retry以后呢?

retry: for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { System.out.println(i+" "+j); if(j ==3) { continue retry; } } } 打印结果: 0 0 0 1 0 2 0 3 1 0 1 1 1 2 1 3 2 0 2 1 2 2 2 3 3 0 3 1 3 2 3 3 4 0 4 1 4 2 4 3

明显发现,在第二个循环遇到3以后就跳出来当前的循环。

那么在break中又是如何?首先是无retry

for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { System.out.println(i+" "+j); if(j ==3) { break; } } } 打印结果 0 0 0 1 0 2 0 3 1 0 1 1 1 2 1 3 2 0 2 1 2 2 2 3 3 0 3 1 3 2 3 3 4 0 4 1 4 2 4 3

 

遇到3跳出第一层循环。

retry: for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { System.out.println(i+" "+j); if(j ==3) { break retry; } } } 打印结果: 0 0 0 1 0 2 0 3

 

加了retry后直接就只跑了一次了0 0,那能否理解为retry就是跳出当前的循环?

有了这个以后 ,很多地方直接跳出整个多层循环的条件就不用再复杂判断了。

 

 

 

 


最新回复(0)