在单线程应用程序中使用StringBuffer

时间:2013-11-11 08:32:36

标签: java stringbuilder stringbuffer

是否有理由在单线程应用程序中使用StringBuffer而不是StringBuilder?如果我们不计算使用多个线程的应用程序中的同步,那么StringBuffer是否有任何优势?

8 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

  

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

答案是:没有理由。

答案 3 :(得分:2)

没有理由选择StringBuffer。以下语句是从StringBuffer Doc:

复制的
  

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

仅当我们想要线程安全时才使用

StringBuffer。将StringBuffer类用于单线程应用程序并不是一个好主意,因为它会使处理速度变慢。因此,如果您不打算使用线程,那么请使用StringBuilder类,因为由于缺少同步,它比StringBuffer更有效。

答案 6 :(得分:1)

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

虽然现代JIT-comiler非常聪明,它可以eliminated不必要的同步,StringBuffer可以转向StringBuilder。但这不可能发生。 =)

答案 7 :(得分:1)

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

(即使你有一些古老的应用程序或库,通常只会传递form-data ......)

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

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

所以: