在看 ThreadPoolExecutor 源码时看到这么一段代码

retry:
for (;;) {
int c = ctl.get();
int rs = runStateOf(c); // Check if queue empty only if necessary.
if (rs >= SHUTDOWN &&
! (rs == SHUTDOWN &&
firstTask == null &&
! workQueue.isEmpty()))
return false; for (;;) {
int wc = workerCountOf(c);
if (wc >= CAPACITY ||
wc >= (core ? corePoolSize : maximumPoolSize))
return false;
if (compareAndIncrementWorkerCount(c))
break retry;
c = ctl.get(); // Re-read ctl
if (runStateOf(c) != rs)
continue retry;
// else CAS failed due to workerCount change; retry inner loop
}
}

break 和 continue 分开测试

retry:
for (;;) {
System.out.println("A");
for (;;) {
System.out.println("B");
break retry;
}
}
System.out.println("End");

retry:
for (; ; ) {
System.out.println("A");
for (; ; ) {
System.out.println("B");
continue retry;
}
}

会无限循环

总结

retry 并不是一个关键字,只是作为一个标记使用。并与最近的一个循环绑定,在使用 break 或 continue 时后面可加上该标记,就可指定对哪一层循环进行操作了

最新文章

  1. android嵌套unity3d
  2. 关于HTML5标签不兼容(IE6~8)
  3. 算法模板——计算几何2(二维凸包——Andrew算法)
  4. Win7 JBOSS的下载安装、环境变量配置以及部署
  5. WPF ListBox数据绑定
  6. 前端测试框架Jest系列教程 -- Global Functions(全局函数)
  7. 如何用Visio画venn(维恩)图
  8. Spark性能调优之资源分配
  9. linkin大话设计模式--观察者模式
  10. 【ASP.NET Core快速入门】(四)在CentOS上安装.NET Core运行时、部署到CentOS
  11. Friends number
  12. Duplicate 复制数据库 搭建Dataguard
  13. [转]Maven与nexus关系
  14. buildroot构建项目(二)--- u-boot 2017.11 建立 2440 开发板
  15. mysql工具Navicat Premium使用
  16. 非常好的 gdb tui 的文章
  17. 【干货】已Window7 系统为例,谈谈boot引导程序-------附带看看数据隐藏
  18. java 判断是否为纯数字
  19. [Codility] CountTriangles
  20. IOS-CocoaPods制作篇

热门文章

  1. 【转】CNN+BLSTM+CTC的验证码识别从训练到部署
  2. MySQL5.5配置文件my.ini详解
  3. DedeAMPZ配置php的curl扩展
  4. linux 用户及文件权限管理
  5. 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system
  6. docker 安装 mxnet
  7. nvidia-docker安装
  8. windows调试之命令行窗口问题
  9. CVE漏洞分析
  10. poj1015 Jury Compromise[背包]