Java retry 重试
JAVA 重试 Retry
2023-09-27 14:23:43 时间
在看 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 时后面可加上该标记,就可指定对哪一层循环进行操作了
相关文章
- java核心技术卷I-接口
- Java 的线程工厂 ThreadFactory原理及源码详解
- java基础---->自定义gradle的插件
- Practical Java
- android JAVA字符串转日期或日期转字符串(转)
- [LeetCode][Java] Minimum Depth of Binary Tree
- Java 类锁、对象锁、私有锁
- java go
- java-并发-线程间协作的两种方式:wait、notify、notifyAll和Condition
- FineReport实现java报表权限使用的效果图
- 十分钟带你深入了解多线程—— Java虚拟机对锁优化所做的努力
- 解决android java.lang.ClassCastException android.app.Application
- java多线程之线程的六种状态