在阅读AtomicStampedReference
的源码中,在compareAndSet()
方法发现一段代码:
1 return
2 expectedReference == current.reference &&
3 expectedStamp == current.stamp &&
4 //上方条件全部符合且为True时,执行下方代码
5 ((newReference == current.reference &&
6 newStamp == current.stamp) ||
7 casPair(current, Pair.of(newReference, newStamp)));
即在return执行方法,并获取最终结果。我编写了一段代码用以测试:
1public class Main {
2 public static void main(String[] args) {
3 Main main = new Main();
4 System.out.println(
5 main.executeIsTrue()
6 );
7 System.out.println();
8 System.out.println(
9 main.executeIsFalse()
10 );
11 }
12
13 boolean executeIsTrue() {
14 return
15 //这行判断结果为True,可以执行say(String word)方法
16 (retTrue() && retTrue()) &&
17 //上述两条都为True,则执行下面代码
18 (print("OK"));
19 }
20
21 boolean executeIsFalse() {
22 return
23 //这行判断结果为False,不能执行say(String word)方法
24 (retTrue() && retFalse()) &&
25 //上述两条都为True,则执行下面代码
26 (print("OK"));
27 }
28
29 boolean retTrue() { return true; }
30 boolean retFalse() { return false; }
31
32 boolean print(String word) { System.out.println(word); return true; }
33}
得到返回结果:
1OK
2true
3
4false
摘自https://www.cnblogs.com/yxiaooutlook/p/7606277.html:
1System.out.println(true && false); //结果为false
2System.out.println(true && true); //结果为true
3System.out.println(false && false); //结果为false
4System.out.println(false && true); //结果为false
即充分利用判断运算符(&&、||)返回boolean的短路,实现在return中实现类似if语句的判断。