Java StringBuilder 和线程安全

标签 java multithreading thread-safety stringbuilder

我正在用多个部分构建一个字符串,并希望使用 StringBufferStringBuilder 来完成此操作。从 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/

相关文章:

java - 使用 BufferedImage 读取和写入图像文件

sql - 你如何处理多线程的陈旧数据?

java - 简单的 Groovy 线程管理器

java - 在java中同步持久化加载器

java - TIMED_WAITING 线程标记为可运行

java - 递归通用和流畅的接口(interface)

java - Spring OAuth oauth/token 在 tomcat 上返回 404 war

node.js - nodejs 多线程 vs nodejs 单线程

c# - WM_PAINT 在 Parallel.For 尚未完成时如何处理?

android - SharedPreferences 和线程安全