Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java多线程程序中使用AtomicInteger是否比其他同步方法更慢、效率更低?_Java_Multithreading - Fatal编程技术网

在java多线程程序中使用AtomicInteger是否比其他同步方法更慢、效率更低?

在java多线程程序中使用AtomicInteger是否比其他同步方法更慢、效率更低?,java,multithreading,Java,Multithreading,我正在用两个多线程java程序进行一个实验。我有一个是不同步的,另一个是使用AtomicInteger。原子整数的速度要慢得多。我想这可能是因为AtomicInteger方法使用compareAndset()。我说的对吗?当然,同步的安全性会带来一些性能代价。例如,请参见 AtomicInteger类及其同级将与纯Java编写的任何等效功能一样快,而且通常更快,因为它们可能能够使用平台上可用的本机指令 无论何时编写并发程序,都要使用java.util.concurrency包。它比使用synch

我正在用两个多线程java程序进行一个实验。我有一个是不同步的,另一个是使用
AtomicInteger
。原子整数的速度要慢得多。我想这可能是因为
AtomicInteger
方法使用
compareAndset()
。我说的对吗?

当然,同步的安全性会带来一些性能代价。例如,请参见

AtomicInteger类及其同级将与纯Java编写的任何等效功能一样快,而且通常更快,因为它们可能能够使用平台上可用的本机指令

无论何时编写并发程序,都要使用
java.util.concurrency
包。它比使用
synchronized
volatile
编写的任何东西都更加健壮和高效


只有当两个线程都使用合适的内存屏障时,一个线程的操作才能保证对另一个线程可见。例如,写入和读取
volatile
变量,或输入
synchronized
块。跳过内存障碍会更快,但由于您的程序被破坏,您的效率为零。

您的问题标题和您的问题完全不同。
AtomicInteger
是否比不同步慢?绝对地
AtomicInteger
是否比其他类型的同步更快?大概(在并发应用程序中完全不同步是可以接受的吗?如果有的话很少。)+1@Louis。比较正确的程序和错误的程序的性能没有多大意义。