java修饰子synchronized

789 ワード

ここでは、出会う可能性のあるsynchronizedの使い方を列挙して解説します。
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(){
    }