同步块与原子性的耗时比较
2014-01-28 11:30
302 查看
package javaBasic; import java.util.concurrent.atomic.AtomicInteger; public class AtomicIntegerCompareTest { private Integer value; private AtomicInteger atomic; public AtomicIntegerCompareTest() { this.value = 0; atomic = new AtomicInteger(0); } void runSync() { long start = System.currentTimeMillis(); // for (int i = 0; i < 1000000; i++) { // synchronized (value) { // value++; // } // } // Synchronized time elapse:63 // 估计每次迭代都会check对象的同步性这个应该会花些时间 /** * 以下代码与上面的代码有何不同?哪个更加耗时?为什么? * 你可以打开如下代码试一试,有点意思。 */ synchronized (value) { for (int i = 0; i < 1000000; i++) { value++; } } // Synchronized time elapse:31 // check同步性在迭代之外,迭代没有消耗时间。 long end = System.currentTimeMillis(); System.out.println("Synchronized time elapse:" + (end - start)); } void runAtomic() { long start1 = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { atomic.incrementAndGet(); } long end1 = System.currentTimeMillis(); System.out.println("AtomicInteger time elapse:" + (end1 - start1)); // AtomicInteger time elapse:31 } public static void main(String args[]) { final AtomicIntegerCompareTest test = new AtomicIntegerCompareTest(); new Thread() { @Override public void run() { test.runSync(); } }.start(); new Thread() { @Override public void run() { test.runAtomic(); } }.start(); } }
相关文章推荐
- 集群中几种session同步解决方案的比较
- 多线程操作STL容器时不同同步方式的比较
- Java同步——可见性和原子性
- 集群中几种session同步解决方案的比较[转]
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- 各种同步方法性能比较(synchronized,ReentrantLock,Atomic)
- [转] 比较清楚的阻塞与非阻塞和同步与异步
- 数据库Backup/restore, 数据库同步, 数据库比较(Schema,Data)
- 分析语句执行步骤并对排出耗时比较多的语句
- 八大排序算法源码 + 耗时长度比较
- 同步复位和异步复位的比较
- 多线程、锁,可重入,同步,原子性,可见性,非阻塞算法
- 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步
- ARC环境下两种单例设计模式的比较:GCD和同步锁
- Powerdesigner与数据库同步(比较新旧数据库的架构)
- PostgreSQL9中stream同步与Slony同步的比较
- 集群中几种session同步解决方案的比较
- currentTimeMillis,getTimeInMillis与getTime获取当前时间戳耗时比较
- 同步和比较数据库工具dbForge Schema Compare for SQL Server