Why use StringBuilder? StringBuffer can work with multiple thread as well as one thread?(为什么使用 StringBuilder?StringBuffer 可以与多个线程以及一个线程一起使用吗?)
问题描述
假设我们的应用程序只有一个线程.而我们正在使用 StringBuffer
那么有什么问题呢?
Suppose our application have only one thread. and we are using StringBuffer
then what is the problem?
我的意思是如果StringBuffer
可以通过同步处理多个线程,那么单线程工作有什么问题?
I mean if StringBuffer
can handle multiple threads through synchronization, what is the problem to work with single thread?
为什么要改用 StringBuilder
?
推荐答案
StringBuffers
是线程安全的,意味着它们有同步的方法来控制访问,因此只有一个线程可以访问 StringBuffer 对象的同步一次编码.因此,StringBuffer 对象通常可以安全地用于多线程环境中,其中多个线程可能试图同时访问同一个 StringBuffer 对象.
StringBuffers
are thread-safe, meaning that they have synchronized methods to control access so that only one thread can access a StringBuffer object's synchronized code at a time. Thus, StringBuffer objects are generally safe to use in a multi-threaded environment where multiple threads may be trying to access the same StringBuffer object at the same time.
StringBuilder 的
访问不同步,因此它不是线程安全的.通过不同步,StringBuilder 的性能可以优于 StringBuffer.因此,如果您在单线程环境中工作,使用 StringBuilder 而不是 StringBuffer 可能会提高性能.这也适用于其他情况,例如只有一个线程将访问 StringBuilder 对象的 StringBuilder 局部变量(即方法中的变量).
StringBuilder's
access is not synchronized so that it is not thread-safe. By not being synchronized, the performance of StringBuilder can be better than StringBuffer. Thus, if you are working in a single-threaded environment, using StringBuilder instead of StringBuffer may result in increased performance. This is also true of other situations such as a StringBuilder local variable (ie, a variable within a method) where only one thread will be accessing a StringBuilder object.
所以,更喜欢 StringBuilder
因为,
So, prefer StringBuilder
because,
- 性能提升小.
- StringBuilder 是 StringBuffer 类的 1:1 替代品.
- StringBuilder 不是线程同步的,因此在大多数 Java 实现上表现更好
看看这个:
- 不要使用StringBuffer!
- StringBuffer 与 StringBuilder 性能比较
这篇关于为什么使用 StringBuilder?StringBuffer 可以与多个线程以及一个线程一起使用吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么使用 StringBuilder?StringBuffer 可以与多个线程以及一个线程一起使用吗?
基础教程推荐
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01