是否有理由StringBuffer
在单线程应用程序中使用而不是StringBuilder
? StringBuffer
如果我们不计算使用多线程的应用程序中的同步,有什么好处吗?
8 回答
我能想到的唯一原因是与 1.5 之前的 Java(可能仍在某些大公司中使用)的兼容性,以及与其他不支持 StringBuilder 的平台(即 CLDC)共享的代码。
不。即使在多线程应用程序中,您也不一定需要StringBuffer
,除非您实际上是从多个线程处理它。如果你是,可能有更好的数据结构可以使用。
没有理由去StringBuffer
。以下语句是从StringBuffer Doc 复制的:
从 JDK 5 开始,该类已经补充了一个为单线程使用而设计的等效类 StringBuilder。通常应优先使用 StringBuilder 类,因为它支持所有相同的操作,但速度更快,因为它不执行同步。
是否有理由在单线程应用程序中使用 StringBuffer 而不是 StringBuilder?
答案是:没有理由。
StringBuffer
仅在我们想要线程安全时使用。将类用于单线程应用程序并不是一个好主意,StringBuffer
因为它会使处理速度变慢。因此,如果您不打算使用线程,请使用StringBuilder
该类,因为它比StringBuffer
没有同步更有效。
StringBuilder 具有非同步方法,而 StringBuffer 具有同步方法。因此,对于单线程应用程序,建议使用 StringBuilder。
您可以StringBuffer
在单线程应用程序中使用,但没有理由。
虽然,现代 JIT 编译器非常聪明,但它可以消除不必要的同步,并且StringBuffer
可以将StringBuilder
. 但这不可能发生。=)
一般来说,没有理由使用 StringBuffer!
(即使您有一些古老的应用程序或库,通常String
也只会传递结果......)
String 从多个线程接收输入的用例应该是什么?
有人可能会考虑像日志记录这样的事情,但如果需要在多线程环境中进行日志记录,那么有很多解决方案可以使用,而无需自己发明......
所以:没有