/*
需求:
银行有一个金库
有两个储户分别存300元 每次存100元,存3次
目的:该程序是否有安全问题,如果有,如何解决?
如何找问题(很重要)
1.明确哪些代码是多线程运行代码
2.明确共享数据
3.明确多线程代码中那些语句是操作共享数据的
*/
class Bank
{
object obj=new object();
private int sum;
public synchronized void add(int n) /*synchronized作为修饰符,将函数变为了函数同步函数*/
{
//synchronized(obj)
//{
sum=sum+n;
System.out.println("sum="+sum);
//}
}
}
class Cus implements Runnable
{
private Bank b=new Bank();
public void run(int n)
{
for(int i=0i<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();
}
}