同步代码块--银行的例子
来源:互联网 发布:php旅游网站文献 编辑:程序博客网 时间:2024/06/05 15:21
需求:
银行有一个金额sum。
有两个储户分别存钱,每次存100,存3次。
目的:该程序是否有安全问题,如果有,如何解决?
如何找问题:
1,明确哪些代码是多线程运行代码。
2,明确共享数据。
3,明确多线程运行代码中哪些语句是操作共享数据的。
class Bank{ private int sum; Object obj = new Object(); public void add(int n) { synchronized(obj){ sum = sum + n; try{Thread.sleep(10);}catch(Exception e){} System.out.println("sum="+sum); } }}class Cus implements Runnable{ private Bank b = new Bank(); public void run(){ for(int x=0; x<3; x++){ b.add(100); } }}class BankDemo{ public static void main(String[] args){ Cus c = new Cus(); Thread t1 = new Thread(c); Thread t2 = new Thread(c); t1.start(); t2.start(); }}
- 共享数据是sum
- 同步代码是{6,7,8},{17}行,所以将6,7,8 行加锁
0 0
- 同步代码块--银行的例子
- 银行取款[多线程]{使用同步代码块确保线程同步}
- 同步代码块的使用
- 线程安全问题(银行取钱问题)、同步代码块、同步方法
- 线程的同步:采用同步代码块实现同步
- 多线程——用同步代码块解决经典储户银行存钱问题
- Java 编程下的同步代码块
- Java 编程下的同步代码块
- Java 编程下的同步代码块
- Java 编程下的同步代码块
- 代码块与函数的同步
- 线程同步---同步代码块
- 线程同步 同步代码块
- 同步代码块
- JAVA同步代码块
- 代码块同步
- 多线程 同步代码块
- 同步代码块
- 如何将现有的web程序导入到myeclipse环境中去
- 小Y喜欢拆拆拆(送)
- Android的加载器(loader)
- 洛谷2243电路维修(bfs)
- 广点通errorCode几广告的实现
- 同步代码块--银行的例子
- emacs 括号自动高亮
- 斜杠与反斜杠的区别
- asp.net <%%>&<%#%>&<%=%>&<%@%>&<%$%>用法区别
- C#的事件机制效率问题
- [高可用性] 负载均衡,会话保持,session同步(转)
- mysql数据库的一半操作
- hdu1690(最短路floyd)
- 从一款已上线的MMO手游分析游戏地图的同步方案