2017-05-25 1 views
0
public void addName(String name) { 
    synchronized(this) { 
     lastName = name; 
     nameCount++; 
    } 
    nameList.add(name); 
    doA(); 
    doB(); 
} 

上記のJavaドキュメントの例に従えば、 "nameList.add(name); doA(); doB();"スレッドセーフですか?synchronized文の外部にあるコード文はスレッドセーフですか?

+3

少しでも常識的にこれにあなた自身が答えることができると思います。最初に 'synchronized'ブロックを作成する目的は何ですか?なぜ 'synchronized'を使うのですか? –

答えて

3

番号のみ:

synchronized(this) { lastName = name; nameCount++; } はここにスレッドセーフであることが示されています。

doA()およびdoB()は追加のロックを持つことができますが、複数回呼び出されて意図しない副作用が発生する可能性があります。

関連する問題