这里通过列举可能碰到的synchronized使用方式来讲解
1.这种情况,不同线程同一对象调用两个方法是冲突的。但是同一对象调用同一方法,a处不冲突,b处冲突。
String s1 = "";
String s2 = "";
public void print1(){
a;
synchronized(s1){
b;
}
}
public void print2(){
synchronized(s2){
}
}
2.这种情况,不同线程同一对象调用两个方法是不冲突的。
public void print1(){
String s1 = "1111";
synchronized(s1){
}
}
public void print2(){
String s2 = "2222";
synchronized(s2){
}
}
3.这种情况,不同线程同一对象调用是冲突的。
public synchronized void print1(){
}
public synchronized void print2(){
}