java同步机制性能比较小测试
来源:互联网 发布:淘宝权重值 编辑:程序博客网 时间:2024/04/29 19:16
测试结果:
47 ms - thread unsafe
3869 ms - synchronized method
3911 ms - synchronized (lock)
3986 ms - synchronized (this)
2319 ms - ReentrantLock
import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Account {private int balance;private Lock lock = new ReentrantLock();public Account(int balance) {this.balance = balance;}public int getBalance() {return balance;}public void add(int num) {lock.lock();try {balance = balance + num;} finally {lock.unlock();}}public void withdraw(int num) {lock.lock();try {balance = balance - num;} finally {lock.unlock();}}public static void main(String[] args) throws InterruptedException {long startTime = System.currentTimeMillis();Account account = new Account(10000);Thread a = new Thread(new AddThread(account, 100));Thread b = new Thread(new WithdrawThread(account, 100));a.start();b.start();a.join();b.join();System.out.println(account.getBalance());System.out.println("elapsed time:"+ (System.currentTimeMillis() - startTime));}static class AddThread implements Runnable {Account account;int amount;public AddThread(Account account, int amount) {this.account = account;this.amount = amount;}public void run() {for (int i = 0; i < 10000000; i++) {account.add(amount);}}}static class WithdrawThread implements Runnable {Account account;int amount;public WithdrawThread(Account account, int amount) {this.account = account;this.amount = amount;}public void run() {for (int i = 0; i < 10000000; i++) {account.withdraw(amount);}}}}
0 0
- java同步机制性能比较小测试
- 【Java】【HashMap】HashMap 同步性能比较
- java各种锁机制的性能比较
- 多进程多线程环境下的同步机制性能测试
- 同步处理的ArrayList和Vector性能小测试
- java同步机制对象锁使用方式比较
- 排序性能测试比较
- Stream性能比较测试
- 关于JAVA中线程同步的性能测试
- 各种同步机制的比较
- 性能测试之字符串比较; C、C++和JAVA
- java中Json工具的用法比较与性能测试
- 性能测试小Tips
- 性能测试小Tips
- oracle性能小测试
- 性能测试小Tips
- java反射机制的性能问题,对比测试!
- 同步机制的小例子
- cocos2d_x_07_游戏_别踩白块儿
- 第十七章 17.2.1节练习 &17.2.2节练习
- 移动开发(IOS) – Quartz 2D绘图
- 数据挖掘算法
- 每周算法练习——最近对问题
- java同步机制性能比较小测试
- 考虑下面的结构
- 移动开发(IOS) – UIKit框架
- 网格控件的简单实用
- 黑马程序员—java基础学习--继承(extends)
- Codeforces 3A-Shortest path of the king(BFS打印路径)
- ID3
- 拟牛顿法(DFP、BFGS)在回归分析中的应用
- 结构体最后的长度为0或1数组的作用