JAVA-retry 重试
2024-10-07 01:49:17
在看 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 时后面可加上该标记,就可指定对哪一层循环进行操作了
最新文章
- android嵌套unity3d
- 关于HTML5标签不兼容(IE6~8)
- 算法模板——计算几何2(二维凸包——Andrew算法)
- Win7 JBOSS的下载安装、环境变量配置以及部署
- WPF ListBox数据绑定
- 前端测试框架Jest系列教程 -- Global Functions(全局函数)
- 如何用Visio画venn(维恩)图
- Spark性能调优之资源分配
- linkin大话设计模式--观察者模式
- 【ASP.NET Core快速入门】(四)在CentOS上安装.NET Core运行时、部署到CentOS
- Friends number
- Duplicate 复制数据库 搭建Dataguard
- [转]Maven与nexus关系
- buildroot构建项目(二)--- u-boot 2017.11 建立 2440 开发板
- mysql工具Navicat Premium使用
- 非常好的 gdb tui 的文章
- 【干货】已Window7 系统为例,谈谈boot引导程序-------附带看看数据隐藏
- java 判断是否为纯数字
- [Codility] CountTriangles
- IOS-CocoaPods制作篇
热门文章
- 【转】CNN+BLSTM+CTC的验证码识别从训练到部署
- MySQL5.5配置文件my.ini详解
- DedeAMPZ配置php的curl扩展
- linux 用户及文件权限管理
- 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system
- docker 安装 mxnet
- nvidia-docker安装
- windows调试之命令行窗口问题
- CVE漏洞分析
- poj1015 Jury Compromise[背包]