public class A {
public synchronized void action1 {
}
public synchronized void action2 {
}
}
A a = new A();
a.action1();
非静态方法的 synchronized 是锁住整个对象
但是如果是这样的:
A a = new A();
A b = new A();
那么此时是两个对象,a和b之间不会有影响
一旦该对象持有锁(被上锁),那么这个对象就不能再访问A类中的任何Synchronized方法,非Synchronized方法还是可以访问的。
上面的代码相当于如下:
public class A {
public void action1 {
synchronized (this) {
}
}
public void action2 {
synchronized (this) {
}
}
}
转载于:https://blog.51cto.com/algona/728338