用于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

10-04 17:00