class Bank{
private int sum;
public synchronized void add(int num){
sum=sum+num;
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("sum="+sum);
}
}
class Cus implements Runnable{
Bank b=new Bank();
public void run(){
for(int x=0;x<3;x++){
b.add(100);
}
}
}
public class Thread18_1 {
public static void main(String[] args) {
Cus c=new Cus();
Thread t1=new Thread(c);
Thread t2=new Thread(c);
t1.start();
t2.start();
}
}
同步函数所有的锁是this;
同步函数和同步代码块的区别:
同步函数的锁是固定的this.
同步代码块的锁是任意的对象。
建议使用同步代码块。
静态的同步函数使用的锁是:该函数所属字节码文件对象。
可以用getClass方法获取,
也可以用当前 类名.class表示。
要使用类名.class 因为getClass是非静态的。