synchronized(this){同步块}
第一种处理方式 this 必须是唯一的
在后续的开发中,我们一般用这个唯一的类的字节码信息来表示唯一的。
boolean getmoney(int m) throws InterruptedException {
synchronized (Money.class){
if (m<=money){
Thread.sleep(1);
money-=m;
System.out.println(Thread.currentThread().getName()+"取钱成功,剩余"+money);
return true;
}
}
System.out.println(Thread.currentThread().getName()+"余额不足,剩余"+money);
return false;
}
第二种
synchronized 线程同步方法
synchronized boolean getmoney(int m) throws InterruptedException {
if (m<=money){
Thread.sleep(1);
money-=m;
System.out.println(Thread.currentThread().getName()+"取钱成功,剩余"+money);
return true;
}
System.out.println(Thread.currentThread().getName()+"余额不足,剩余"+money);
return false;
}