1. break退出外层循环
- 使用标识符定义for循环跳出位置
public static void main(String[] args) {
int m = -1;
outCycle:
for (int i = 0; i < 10; i++) {
for (int j = 0; j< 12; j++) {
if (i == 3 && j == 4) {
m = 5;
break outCycle;
}
}
m = i;
}
System.out.println(m); //输出5
}
2. 使用一个int类型的变量存储两个值减少CAS次数
- 来自线程池的源码,将线程池的状态和线程池中工作线程的数量存储为一个AtomicInteger型变量ctl,高3位用于存储线程池的状态,低29位用于存储线程池中工作线程的数量。用一个变量存储两个值,可避免在做相关决策时,出现不一致的情况,不必为了维护两者的一致而占用锁资源。线程池的源代码中,经常出现同时判断线程池运行状态和线程数量的情况。