用于AtomicBoolean的Oracle JDK Javadoc指出:
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html
我和一位同事正试图找出一个用例,其中AtomicBoolean不能替代,并且我们唯一能想到的是, boolean 对象具有某些方法,而AtomicBoolean没有。
这是唯一的原因,还是在撰写时还有其他想法?
最佳答案
Boolean
是原始boolean
的包装器类。它可以由编译器从boolean
自动创建(装箱转换),也可以转换为 boolean 值(拆箱转换)。 AtomicBoolean
并非如此,因为它是一个为并发目的设计的单独类。
因此,这两个类在语言级别具有不同的语义:
Boolean b = new Boolean(true);
AtomicBoolean ab = new AtomicBoolean(true);
System.out.println(true == b); // automatic unboxing of Boolean variable
System.out.println(true == ab); // compiler error