A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.heima.code;
/*
需求:
银行有一个金库。
有两个储户分别存入300元,每次存100元,存3次。

目的:该程序是否有安全问题,如果有,如何解决?

如何找到问题?
1.明确哪些代码是多线程运行代码;
2.明确共享数据;
3.明确多线程运行代码中哪些语句是操作共享数据的。

* */
class Bank {
        private int sum = 0;// 银行总金额
//        Object obj = new Object();
        public synchronized void add(int n) {
//                synchronized (obj) {
                        sum = sum + n;
                        try {
                                Thread.sleep(10);
                        } catch (InterruptedException e) {

                                e.printStackTrace();
                        }
                        System.out.println("银行金额sum:" + sum);
//                }
        }
}

class Cus implements Runnable {
        private Bank b = new Bank();

        public void run() {

                for (int i = 0; i < 3; i++) {
                        b.add(100);
                }
        }
}

public class ThreadDemo05 {

        public static void main(String[] args) {
                Cus c = new Cus();
                Thread t1 = new Thread(c);
                Thread t2 = new Thread(c);
                t1.start();
                t2.start();
        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马