/* 需求:银行有一个金库。 有两个储户分别存300元,每次存100,存3次 目的:该程序是否有安全问题,如果有,如何解决。 如何找问题: 1.明确哪些代码是多线程运行代码 2.明确共享数据 3.明确多线程运行代码中哪些语句是操作共享数据的 */ class Banka{ private int sum; public sychronized void add(int n){ 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 Bank{ public static void main(String[] args){ Cus c = new Cus(); Thread t1 = new Thread(c); Thread t2 = new Thread(c); t1.start(); t2.start(); } }
同步函数,多个线程都需要操作的函数,加上sychronized。