java修饰子synchronized
789 ワード
ここでは、出会う可能性のあるsynchronizedの使い方を列挙して解説します。
1.この場合、異なるスレッドが同じオブジェクトで2つの方法を呼び出すのは競合します。しかし、同じオブジェクトが同じ方法を呼び出すと、aは競合しません。bは衝突します。
1.この場合、異なるスレッドが同じオブジェクトで2つの方法を呼び出すのは競合します。しかし、同じオブジェクトが同じ方法を呼び出すと、aは競合しません。bは衝突します。
String s1 = "";
String s2 = "";
public void print1(){
a;
synchronized(s1){
b;
}
}
public void print2(){
synchronized(s2){
}
}
2.この場合、スレッドが異なるオブジェクトから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(){
}