1

是否有理由StringBuffer在单线程应用程序中使用而不是StringBuilder? StringBuffer如果我们不计算使用多线程的应用程序中的同步,有什么好处吗?

4

8 回答 8

3

我能想到的唯一原因是与 1.5 之前的 Java(可能仍在某些大公司中使用)的兼容性,以及与其他不支持 StringBuilder 的平台(即 CLDC)共享的代码。

于 2013-11-11T08:36:34.083 回答
3

不。即使在多线程应用程序中,您也不一定需要StringBuffer,除非您实际上是从多个线程处理它。如果你是,可能有更好的数据结构可以使用。

于 2013-11-11T08:34:46.410 回答
2

没有理由去StringBuffer。以下语句是从StringBuffer Doc 复制的:

从 JDK 5 开始,该类已经补充了一个为单线程使用而设计的等效类 StringBuilder。通常应优先使用 StringBuilder 类,因为它支持所有相同的操作,但速度更快,因为它不执行同步。

于 2013-11-11T08:36:35.573 回答
2

是否有理由在单线程应用程序中使用 StringBuffer 而不是 StringBuilder?

答案是:没有理由。

于 2013-11-11T08:34:37.797 回答
1

StringBuffer仅在我们想要线程安全时使用。将类用于单线程应用程序并不是一个好主意,StringBuffer因为它会使处理速度变慢。因此,如果您不打算使用线程,请使用StringBuilder该类,因为它比StringBuffer没有同步更有效。

于 2013-11-11T08:37:19.883 回答
1

StringBuilder 具有非同步方法,而 StringBuffer 具有同步方法。因此,对于单线程应用程序,建议使用 StringBuilder。

于 2013-11-11T08:34:52.653 回答
1

您可以StringBuffer在单线程应用程序中使用,但没有理由。

虽然,现代 JIT 编译器非常聪明,但它可以消除不必要的同步,并且StringBuffer可以将StringBuilder. 但这不可能发生。=)

于 2013-11-11T08:53:40.780 回答
1

一般来说,没有理由使用 StringBuffer!

(即使您有一些古老的应用程序或库,通常String也只会传递结果......)

String 从多个线程接收输入的用例应该是什么?

有人可能会考虑像日志记录这样的事情,但如果需要在多线程环境中进行日志记录,那么有很多解决方案可以使用,而无需自己发明......

所以:没有

于 2017-05-19T16:39:13.503 回答