/*
需求:
银行有一个金库
有两个储户分别存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();
    }
}

相关文章:

  • 2022-01-08
  • 2022-02-22
  • 2021-05-27
  • 2022-01-21
  • 2021-08-22
  • 2021-11-22
  • 2021-08-15
  • 2022-02-06
猜你喜欢
  • 2022-12-23
  • 2022-02-07
  • 2022-02-18
  • 2022-12-23
  • 2022-12-23
  • 2021-10-06
  • 2022-02-21
相关资源
相似解决方案