贝利信息

Java中StringBuffer和StringBuilder有什么区别_线程安全差异解析

日期:2025-12-25 00:00 / 作者:P粉602998670
StringBuffer线程安全但性能低,StringBuilder单线程高性能;二者API和底层实现一致,选择取决于是否存在并发写入场景。

线程安全是核心区别

StringBuffer所有公开方法都用 synchronized 修饰,天然支持多线程并发操作,不会出现数据错乱;StringBuil

der完全不加锁,多个线程同时调用它的 appendinsert 等方法时,结果不可预测。

性能表现差异明显

同步机制带来开销,单线程环境下 StringBuilder 通常比 StringBuffer 快 5–15 倍。比如循环拼接 10 万次字符串,用 StringBuilder 可能耗时 2ms,而 StringBuffer 可能达到 20ms 以上。

功能几乎完全一致

两者都继承自 AbstractStringBuilder,共享全部核心 API:append、insert、delete、reverse、substring、capacity、length 等。代码从 StringBuffer 切换到 StringBuilder,通常只需改类名,无需调整逻辑。

使用场景怎么选

不是看“要不要安全”,而是看“有没有并发写入”:

JDK 5 引入 StringBuilder 就是为了填补 StringBuffer 在单线程下的性能缺口,不是替代,而是分工。