/* * 需求: * 银行有一个金库 * 有两个储户,分别存300元。每次存100 , 存三次 * * 这个是有线程问题的, * * 我们应该通过下边的三个方法来查找问题 * 1.明确哪些代码是多线程运行的代码 * 2.明确共享数据 * 3.明确多线程运行代码中哪些是操作共享数据的 */ class Bank { private int sum; public synchronized void add (int n) { sum = sum + n; try {Thread.sleep (10);}catch (Exception e){} System.out.println ("sum="+ sum); } } class Cus implements Runnable { private Bank bank = new Bank (); public void run(){ for (int x=0; x<3;x++){ bank.add(100); } } } public class BankDemo { public static void main(String[] args) { Cus cus = new Cus (); Thread t1 = new Thread (cus); Thread t2 = new Thread (cus); t1.start(); t2.start(); } }
上边代码中的synchorinized 关键字 是可以放到函数前边的,这就叫做同步函数 跟下边的用法是一个作用
Object obj = new Object ();
Synchronized (obj) {
//需要同步的代码块
}
时间: 2024-10-16 01:59:23