黑马程序员多线程11天1

/*
需求:
银行有一个金库。
有两个储户分别存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(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();
    }
}
原文地址:https://www.cnblogs.com/guwenren/p/3006384.html