package ch;
/**
* 两个储户到同一个银行存钱,每个人存了三次,每次100元。
* 1.描述银行
* 2.描述储户行为
* @author Administrator
*
*/
class Bank{
private int sum;
private Object lock = new Object();
Bank(){}
public void add(int n) {
synchronized(lock) {
sum += n;
System.out.println("sum="+sum);
}
}
}
class Customer implements Runnable{
private Bank b = new Bank();
public void run() {
for(int i = 0;i<3;i++) {
b.add(100);
}
}
}
public class ThreadDemo {
public static void main(String [] args) {
Customer c = new Customer();
Thread t1 = new Thread(c);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
添加同步的判断依据:
1.线程任务中是否有共享的数据。
2.是否多条操作共享数据的代码。
同步函数:就是在函数中加上了同步关键字修饰,同步表现形式有两种,1.同步代码块。2.同步函数。
多线程在同步中必须使用同一个所对象。