Java 提供了三个字符串操作类String,StringBuilder and StringBuffer
。其中StringBuilder
不同步和StringBuffer
同步。
所以我只想问有没有可能同步StringBuilder
。
Java 提供了三个字符串操作类String,StringBuilder and StringBuffer
。其中StringBuilder
不同步和StringBuffer
同步。
所以我只想问有没有可能同步StringBuilder
。
当然,只需在外部同步,无论是使用块还是在您从多个线程synchronized
访问时手动进行。StringBuilder
但你为什么想要?你已经StringBuffer
有了。
引用
此类 [StringBuilder] 提供了与 StringBuffer 兼容的 API,但不保证同步。此类设计用于在单个线程正在使用字符串缓冲区的地方(通常情况下)用作 StringBuffer 的替代品。在可能的情况下,建议优先使用此类而不是 StringBuffer,因为它在大多数实现下会更快。
如果知道 StringBuffer 是同步的,为什么还要同步 StringBuilder?
我想你可以扩展 StringBuilder,并创建一个调用非同步方法的同步方法
是的,您可以借助锁定机制(如synchronized
方法或块或Reentrantlock
.
StringBuffer
已经存在,建议使用那个。
当然..您可以同步StringBuilder
,但StringBuffer
已经存在于已同步的 API 中。
StringBuffer
为数据操作方法(insert()
等append()
)以及数据读取方法(indexOf()
、subSequence()
等toString()
)同步所有方法。
通过同步,只有您希望在使用时线程安全的特定代码块StringBuilder
,我认为您可以获得一些性能。