synchronized
作用在方法上
- 实例方法: 上锁的是当前实例对象, 其他线程竞争当前实例对象时, 会阻塞住
- 静态方法: 上锁的是当前类对象, 其他线程竞争当前类对象时, 会阻塞住
所以,synchronized
作用在相同类中的实例方法和静态方法是不影响的
// 实例方法和静态方法是不影响的
public synchronized void test1() {
}
public static synchronized void test2() {
}
synchronized
代码块
- 与方法同理, 上锁的是小括号内的实例对象 / 类对象
synchronized (obj) {
}