如何理解 Java 中 StringBuffer 是线程安全的而 StringBuilder 不是线程安全的?\n


StringBuffer(线程安全)

  • StringBuffer 是线程安全的,这意味着它们具有同步方法来控制访问,以便一次只有一个线程可以访问 StringBuffer 对象的同步代码。
  • 在多线程环境中,当多个线程可能同时尝试访问同一 StringBuffer 对象时,通常安全地使用 StringBuffer 对象。

StringBuilder(非线程安全)

  • StringBuilder 不是同步的,因此不是线程安全的。由于没有同步,StringBuilder 的性能可能优于 StringBuffer。
  • 如果我们在单线程环境中工作,则使用 StringBuilder 而不是 StringBuffer 可能提高性能。对于其他情况也是如此,例如 StringBuilder 局部变量,其中只有一个线程将访问 StringBuilder 对象。


更新于: 2019-07-30

3K+ 浏览量

启动你的 事业

完成课程后获得认证

开始
广告