在java多线程程序中使用AtomicInteger是否比其他同步方法更慢、效率更低?
我正在用两个多线程java程序进行一个实验。我有一个是不同步的,另一个是使用在java多线程程序中使用AtomicInteger是否比其他同步方法更慢、效率更低?,java,multithreading,Java,Multithreading,我正在用两个多线程java程序进行一个实验。我有一个是不同步的,另一个是使用AtomicInteger。原子整数的速度要慢得多。我想这可能是因为AtomicInteger方法使用compareAndset()。我说的对吗?当然,同步的安全性会带来一些性能代价。例如,请参见 AtomicInteger类及其同级将与纯Java编写的任何等效功能一样快,而且通常更快,因为它们可能能够使用平台上可用的本机指令 无论何时编写并发程序,都要使用java.util.concurrency包。它比使用synch
AtomicInteger
。原子整数的速度要慢得多。我想这可能是因为AtomicInteger
方法使用compareAndset()
。我说的对吗?当然,同步的安全性会带来一些性能代价。例如,请参见 AtomicInteger类及其同级将与纯Java编写的任何等效功能一样快,而且通常更快,因为它们可能能够使用平台上可用的本机指令
无论何时编写并发程序,都要使用java.util.concurrency
包。它比使用synchronized
或volatile
编写的任何东西都更加健壮和高效
只有当两个线程都使用合适的内存屏障时,一个线程的操作才能保证对另一个线程可见。例如,写入和读取
volatile
变量,或输入synchronized
块。跳过内存障碍会更快,但由于您的程序被破坏,您的效率为零。您的问题标题和您的问题完全不同。AtomicInteger
是否比不同步慢?绝对地AtomicInteger
是否比其他类型的同步更快?大概(在并发应用程序中完全不同步是可以接受的吗?如果有的话很少。)+1@Louis。比较正确的程序和错误的程序的性能没有多大意义。