gpt4 book ai didi

Java:StringBuilder 的线程安全

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:59 28 4
gpt4 key购买 nike

我有一个场景,我想将 StringBuilder 用作方法中的局部变量。我知道如果 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但是List<String> property谁有危险。您有两个选择:

  1. 制作myMethod和其他改变属性的方法 synchronized

  2. 使用 java.util.concurrent.CopyOnWriteArrayList这是线程安全的,并为迭代器制作快照

关于Java:StringBuilder 的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918946/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com