当一个方法同步时,我们可以在StringBuffer上使用StringBuilder吗?

时间:2014-05-02 05:29:31

标签: java concurrency synchronization stringbuilder stringbuffer

我有一个同步的方法。我想使用字符串缓冲区来形成一个长串联字符串。我知道StringBuffer和StringBuilder都可以完成这项工作。同时,我认为StringBuilder更好,因为它不会产生任何额外的同步成本,因为该方法已经做到了。

你说什么?

3 个答案:

答案 0 :(得分:2)

如果您正在管理线程安全,那么StringBuilder是不错的选择,在后一种情况下StringBuffer会更好。

从您自己管理线程安全总是更好,因为有时您的代码中有非常小的关键部分,因此只有method level Synchronization block level是不够的,但是在方法中比如StringBuffer,有时同步会导致高成本,但无论如何它都可以满足您的需求。

答案 1 :(得分:1)

只要多个线程没有访问StringBuilder本身或导致以并发方式访问它,那么你应该没问题。

在您的情况下,如果StringBuilder/Buffer所在的方法是synchronized,则任何时候只有一个线程可以访问它,因此StringBuilder就足够了。

答案 2 :(得分:0)

由于您的StringBuilder对象未与其他线程共享,您可以使用..