StringBuffer vs StringBuilder

时间:2015-09-16 14:08:10

标签: java algorithm stringbuilder synchronized stringbuffer

我正在学习算法实现课程。我的老师提到了StringBuffer和StringBuilder,他说StringBuffer比StringBuilder更安全,因为在线程方面。真的吗?如果是这样,那意味着什么?我查了一下这个问题,很多答案都提到了同步。任何人都可以解释这意味着什么,以及如何使StringBuffer比StringBuilder更安全?

2 个答案:

答案 0 :(得分:5)

StringBuffer已同步所有方法。

来自java doc

  

线程安全,可变的字符序列

同步是一个系统,用于将线程访问与代码部分同步,以便最多一个线程可以执行同步块。

如果您的代码不是多线程的,或者只是如果您使用的StringBuffer未在线程之间共享,请使用StringBuilder。它更快。

来自StringBuilder的javadoc

  

可变的字符序列。该类提供API   兼容StringBuffer,但不保证   的同步即可。此类旨在用作插入   在字符串缓冲区为的地方替换StringBuffer   由单个线程使用(通常情况下)。哪里   可能,建议优先使用此类    StringBuffer,因为在大多数实现中它会更快

答案 1 :(得分:0)

由于它的所有方法都是同步的,这意味着即使你有100个线程(或更多)同时使用和修改它,它也会在处理其他请求之前完全执行每个操作。使用StringBuilder,你没有这样的保证。