我正在用多个部分构建一个字符串,并希望使用 StringBuffer
或 StringBuilder
来完成此操作。从 Java 5 文档中,我看到 StringBuilder
是首选,但需要注意的是
Instances of
StringBuilder
are not safe for use by multiple threads.
从这个声明中,我了解到我不应该让多个线程共享一个 StringBuilder
实例。但是这个案例呢:
//Is this safe?
//foo() is called simultaneously by multiple threads
String foo(String a, String b) {
return new StringBuilder(a).append(b).toString();
}
这里函数中可以同时有多个线程,同时使用StringBuilder
类(例如,静态变量的并发访问,如果有的话),但是每个线程将有其自己单独的 StringBuilder
实例。从文档中,我不能完全确定这是否算作多线程使用。
最佳答案
那太好了。只要局部变量不访问或改变实例或类变量,它们就没有线程安全问题。
关于Java StringBuilder 和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/631645/