synchronized在共享的函数前声明即可
class Bank {
private int sum = 0;
public synchronized void add(int n) {
sum += n;
System.out.println("sum=" + sum);
}
}
class Cus implements Runnable {
private Bank bank = new Bank();
@Override
public void run() {
for (int i = 0; i < 3; i++) {
bank.add(100);
}
}
}
public class BankDemo {
public static void main(String[] args) {
Cus cu = new Cus();
new Thread(cu).start();
new Thread(cu).start();
}
}
同步函数 使用的锁其实是this 即当前对象,但是当 同步函数被static修饰时 锁不在是this 因为 静态方法中不可以定义this。静态进入内存是:内存中没有本类对象但是一定有该类对应的字节码文件 类名.class,即该对象的类型就是class