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

繼上面的java文檔的例子,「nameList.add(name); doA(); doB();」是線程安全的?同步語句之外的代碼語句是否線程安全?

+3

我想你可以用一點常識來回答這個問題。首先創建一個'synchronized'塊的目的是什麼?你爲什麼使用'synchronized'? –

回答

3

號只有:

synchronized(this) { lastName = name; nameCount++; } 證明是線程安全的在這裏。 doA()和doB()雖然可以有額外的鎖定,但可能會被多次調用,可能會產生意想不到的副作用。