这里通过列举可能碰到的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(){
}
同步方法冲突详解
本文通过三种典型场景,探讨了在Java中使用synchronized关键字时,不同线程对同一对象调用方法时可能出现的冲突情况。具体包括:1. 同一对象调用不同方法时的冲突情况;2. 使用局部变量作为锁时的并发行为;3. 方法声明为synchronized时的互斥访问。
491

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



