我正在选修算法实现类。我的老师提到了StringBuffer和StringBuilder,他说StringBuffer比StringBuilder更安全,因为在线程方面。这是真的吗?如果是这样,这意味着什么?我查过这个问题,很多答案都提到了同步。谁能解释一下这是什么意思,以及它是如何让StringBuffer比StringBuilder更安全的?
发布于 2015-09-16 22:10:02
StringBuffer同步了所有的方法。
来自java doc
一个线程安全、可变的字符序列
同步是同步线程对代码部分访问的系统,以便至多一个线程可以执行同步块。
如果您的代码不是多线程的,或者仅仅是您正在使用的StringBuffer没有在线程之间共享,那么就使用StringBuilder。它的速度更快。
来自StringBuilder的javadoc:
一个可变的字符序列。此类提供了与StringBuffer兼容的API,但使用不能保证API。此类被设计为在字符串缓冲区是由单个线程(通常是这种情况)使用的的地方,用作StringBuffer的临时替代。在可能的情况下,建议优先使用此类而不是 StringBuffer,因为在大多数实现下,它的速度会更快。
发布于 2015-09-16 22:23:41
由于它的所有方法都是同步的,这意味着即使您有100个(或更多)线程同时使用和修改它,它也会在处理其他请求之前完全执行每个操作。对于StringBuilder,您就没有这样的保证。
https://stackoverflow.com/questions/32610983
复制相似问题