我有一個場景,我想使用StringBuilder
作爲方法中的局部變量。我明白如果StringBuilder
是一個本地方法變量,它不應該有任何有關線程安全的問題。Java:使用StringBuilder進行線程安全
但是,如果我追加到StringBuilder
一個實例變量,如:
class MyClass {
private List<String> property;
public void myMethod() {
StringBuilder sb = new StringBuilder();
for(String s : property) {
sb.append(s);
}
}
// some other methods that mutate property
}
我想使這個線程安全的,簡單地改變StringBuilder
到StringBuffer
是不夠的。我應該在財產本身上進行同步嗎?
我的方法在做什麼?似乎它正在創建一個StringBuilder對象並將它扔掉...... – stivlo
您需要同步訪問'List',而不是'StringBuilder' –
您可能想要在屬性之間進行分隔。 –