2

Java 提供了三个字符串操作类String,StringBuilder and StringBuffer。其中StringBuilder不同步和StringBuffer同步。

所以我只想问有没有可能同步StringBuilder

4

5 回答 5

4

当然,只需在外部同步,无论是使用块还是在您从多个线程synchronized访问时手动进行。StringBuilder

但你为什么想要?你已经StringBuffer有了。

于 2013-04-12T04:48:00.957 回答
2

引用

此类 [StringBuilder] 提供了与 StringBuffer 兼容的 API,但不保证同步。此类设计用于在单个线程正在使用字符串缓冲区的地方(通常情况下)用作 StringBuffer 的替代品。在可能的情况下,建议优先使用此类而不是 StringBuffer,因为它在大多数实现下会更快。

于 2013-04-12T04:48:53.707 回答
0

如果知道 StringBuffer 是同步的,为什么还要同步 StringBuilder?

我想你可以扩展 StringBuilder,并创建一个调用非同步方法的同步方法

于 2013-04-12T04:48:22.143 回答
0

是的,您可以借助锁定机制(如synchronized方法或块或Reentrantlock.

StringBuffer已经存在,建议使用那个。

于 2013-04-12T04:51:22.547 回答
0

当然..您可以同步StringBuilder,但StringBuffer已经存在于已同步的 API 中。

StringBuffer为数据操作方法(insert()append())以及数据读取方法(indexOf()subSequence()toString())同步所有方法。

通过同步,只有您希望在使用时线程安全的特定代码块StringBuilder,我认为您可以获得一些性能。

于 2013-04-12T04:56:39.037 回答