synchronized的三种用法
1.修饰方法块
public synchronized String getUserName() {
System.out.println(userName);
return userName;
}
每一个对象内都有一个默认的monitor锁,使用synchronized修饰是对当前对象加锁。
那么,如果这个对象中还有另外一个方法被synchronized修饰,这两个方法也会相互竞争,谁得到锁,谁先执行。
2.修饰代码块
需要指定在哪个对象上加锁。
public String getUserName() {
synchronized (this){
System.out.println(userName);
return userName;
}
}
一般的话,是在this上加锁,那么和case1在方法上加锁,其实没什么区别。
3.修饰静态方法
是对类的class对象加锁。如果有两个静态方法都是synchronized的,那么这两个方法也是会同步进行。
本文详细介绍了Java中synchronized关键字的三种使用方式:修饰方法块、修饰代码块以及修饰静态方法,并解释了每种方式如何实现对象级或类级的同步控制。
1684

被折叠的 条评论
为什么被折叠?



