我正在进行两个多线程Java程序的实验。我有一个不同步,另一个使用AtomicInteger
。 AtomicInteger
要慢得多。我想这可能是因为方法AtomicInteger
使用compareAndset()
。我对么?在Java多线程程序中使用AtomicInteger比其他同步方法更慢,效率更低?
1
A
回答
1
当然,同步的安全性会带来一些性能成本。例如,请参阅Cost of synchronization。
1
AtomicInteger
类和它的兄弟姐妹将像您可以在纯Java中编写的任何等效功能一样快,并且通常会更快,因为它们可能能够使用平台上的本机指令。
无论何时编写并发程序,请使用java.util.concurrency
软件包。这是更强大和比你用或volatile
写的任何东西都更有效率。
如果两个线程都使用合适的内存屏障,则一个线程的操作只能保证对另一个线程可见。例如,写入和读取变量volatile
,或输入块。跳过内存障碍会更快,但是由于您的程序被破坏,您的效率为零。
相关问题
- 1. AtomicInteger比同步更慢
- 2. 更多线程同步实例的同步方法
- 3. 同步线程减慢多线程应用程序
- 4. Java ForkJoin多线程比单线程慢
- 5. 运行一个多线程程序同步非常慢Java
- 6. 更简单的方法来同步Java中的2个线程?
- 7. 多线程WPF应用程序:调度程序调用。更有效的方法?
- 8. 多线程使进程更慢
- 9. 同步方法在单线程应用程序中速度较慢吗?
- 10. Java多线程变得更慢
- 11. 为什么在此多线程程序中不同步访问同步方法?
- 12. 多进程效率低下
- 13. Java,线程示例,使其同步更好
- 14. Java - 使用同步方法的多线程练习
- 15. 问题在多线程的Java应用程序 - 同步方法如预期
- 16. java如何处理多线程?比进程更多的线程
- 17. 在其他线程上执行方法的同步
- 18. 多线程random_r比单线程版本更慢
- 19. 同步多线程JAVA
- 20. Java - 多线程和同步
- 21. Java多线程同步
- 22. Java多线程同步
- 23. 的Java多线程同步
- 24. Java多线程同步块
- 25. Java的同步,并通过多线程使用静态同步方法
- 26. 使用intel TBB的低效fibonacci系列比非线程实现慢得多
- 27. 在java中同步多线程
- 28. 如何在java中使用同步方法实现线程同步?
- 29. 效率在多线程
- 30. 方法上的Java线程同步
您的问题标题和您的问题完全不同。 AtomicInteger慢于_no_同步吗?绝对。 AtomicInteger比其他类型的同步更快吗?也许。 (并发应用程序中是否允许完全非同步?很少,如果有的话)。 –
+1 @Louis。比较一个正确的程序和一个不正确的程序之间的性能没有太大的意义。 – JimN