我正在用两个多线程 java 程序进行实验。我有一个不同步,另一个正在使用AtomicInteger
. AtomicInteger
速度要慢得多。我认为这可能是因为AtomicInteger
使用的方法compareAndset()
。我对么?
问问题
366 次
2 回答
1
当然,同步的安全性伴随着一些性能成本。例如,请参阅同步成本。
于 2012-12-08T00:22:48.030 回答
1
该类AtomicInteger
及其同级将与您可以用纯 Java 编写的任何等效功能一样快,并且通常会更快,因为它们很可能能够使用平台上可用的本机指令。
每当您编写并发程序时,请使用该java.util.concurrency
包。它比你用or编写的任何东西都更健壮、更高效。synchronized
volatile
只有当两个线程都使用合适的内存屏障时,一个线程的操作才能保证对另一个线程可见。例如,写入和读取一个volatile
变量,或者输入一个synchronized
块。跳过内存障碍会更快,但是由于您的程序被破坏,您的效率为零。
于 2012-12-08T00:47:19.887 回答