Java 使用不安全类在同步块上编写原子有什么好处?

Java 使用不安全类在同步块上编写原子有什么好处?,java,atomic,unsafe,Java,Atomic,Unsafe,为什么java Atomics使用sun不安全类而不是使用synchronize block/volatile?我可以想到,Atomics类的程序员知道他们在做什么,所以他们使用低级方法来获得更好的性能 在执行多线程操作时,同步是一个非常繁重的工具。它以强大的方式实现简单的锁定/互斥。同步要重得多 Java 1.4并发库的后端口使用同步,但是它不执行任何类似的操作 “不安全”允许直接访问CPU的比较和交换指令。您认为它会暴露太多关于低级事物的细节吗?@Clark,我认为99%的情况下不需要“不安

为什么java Atomics使用sun不安全类而不是使用synchronize block/volatile?

我可以想到,Atomics类的程序员知道他们在做什么,所以他们使用低级方法来获得更好的性能


在执行多线程操作时,同步是一个非常繁重的工具。它以强大的方式实现简单的锁定/互斥。

同步要重得多

Java 1.4并发库的后端口使用同步,但是它不执行任何类似的操作


“不安全”允许直接访问CPU的比较和交换指令。

您认为它会暴露太多关于低级事物的细节吗?@Clark,我认为99%的情况下不需要“不安全”,您应该使用使用使用“不安全”类的类。通常,它只会帮助您了解类的使用方式。在极少数情况下,使用“不安全”是唯一的方法/@Peter可能使用多线程本身已经将java等语言推向了极限。也许在某些通用工具类中抽象多线程所需的所有函数太难了。@Clark,多线程是Java中内置的,并发库自2004年以来就已经集成。我当然不认为它推高了java的极限。顺便说一句,您可能想看看不安全类;)/@彼得,我看了看。毫无疑问,充满了本土的方法。compareAndSwapObject compareAndSwapInt compareAndSwapLong,它们在CPU指令方面有何不同。如果有一天CPU改变了多线程的行为,我想java也会改变API。