隐式锁,Synchronized(传统方式)
class Bank{
public synchronized void transfer(){ //同步方法
.....
}
public double getTotal(){
synchronized(this){ //同步块
.....
}
}
public void size(){
.....
}
static synchronized void xxx(){ //Bank.class
}
}
被synchronized修饰的方法表示同步方法,线程在执行同步方法时
首选应该获取方法所在对象的锁,拿到锁之后才可以执行,其他线程
要想执行同一个方法也需要拿到对象锁,但是已有线程拿到锁,所以
第二个线程只能在等待(阻塞),直到对象锁释放为止。 |