//多线程同步函数(方法)
/* 需求:
* 银行有一个金库
* 有两个存户分别存300元,每次存100,存3次。
* 目的:该程序是否有安全问题,如果有,如何解决
* 如何找问题:
* 1、 明确哪些代码是多线程运行代码
* 2、明确共享数据
* 3、明确多线程运行代码中哪些语句是操作共享数据的
* */
class Bank {
private int sum;
// Object obj = new Object();
// 定义存钱方法
public synchronized void add(int n) {
// synchronized (obj) {
sum = sum + n;
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("sum = :" + sum);
// }
}
}
class Cus implements Runnable {
private Bank b = new Bank();
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 3; i++) {
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();
}
}
同步代码块同步函数实例
最新推荐文章于 2022-05-28 20:31:04 发布