为什么要使用StringBuilder? StringBuffer可以同时使用多个线程吗?
|
假设我们的应用程序只有一个线程。并且我们正在使用
StringBuffer
,这是什么问题?
我的意思是如果“ 0”可以通过同步处理多个线程,那么使用单线程有什么问题?
为什么改用StringBuilder
?
没有找到相关结果
已邀请:
8 个回复
咳累录酬
访问未同步,因此不是线程安全的。通过不同步,StringBuilder的性能可以比StringBuffer更好。因此,如果您在单线程环境中工作,则使用StringBuilder代替StringBuffer可能会提高性能。在其他情况下也是如此,例如StringBuilder局部变量(即方法中的变量),其中只有一个线程将访问StringBuilder对象。 因此,更喜欢
,因为, 性能增益小。 StringBuilder是StringBuffer类的1:1替代品。 StringBuilder不是线程同步的,因此在大多数Java实现上表现更好 看一下这个 : 不要使用StringBuffer! StringBuffer与StringBuilder的性能比较
勺的驴吓识
豆兢
每个追加都是同步的,但是线程可以在任何时候弯腰,因此您可以具有以下任意组合以及更多
可以通过一次同步整行来避免这种情况,但是这使使用StringBuffer而不是StringBuilder失去了意义。 即使您具有正确同步的视图,它也比仅创建整个行的线程本地副本要复杂得多,例如一次将StringBuilder和日志行发送到类似Writer的类。
镰茧钩
并置的代码时使用
(现在是
):在那种情况下,同步永远是没有必要的,并且可以用不同步的
替换所有这些位置。提供小的性能改进。
膏焦凑
具有更好的性能,因为它的方法不同步。 因此,如果您不需要同时构建一个String(无论如何这都是非常不典型的情况),那么就不需要为不必要的同步开销“付出”。
完趣镐
冲汉
骇毖煽洁铂