如何在java中保证stringbuffer线程安全
创始人
2024-12-28 21:21:56
0次

1.StringBuffer线程说明

Java.lang.StringBuffer线程安全的可变字符序列。一个类似于String的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

2.synchronized锁的应用方式

(1)修饰实例方法,对当前实例加锁

public synchronized StringBuffer append(int i) {
  toStringCache = null;
  super.append(i);
  return this;
 }

(2)修饰静态方法,对当前类对象加锁

public static synchronized void test(){
  i++;
 }

(3)修饰代码块,对指定对象加锁

 public boolean contentEquals(CharSequence cs) {
  // Argument is a StringBuffer, StringBuilder
  synchronized(cs) {
     return nonSyncContentEquals((AbstractStringBuilder)cs);
   } 
 }

3.线程安全分析

StringBuffer buffer= new StringBuffer();
  buffer.append("d");
然后进入appen里面看看
@Override
 public synchronized StringBuffer append(String str) {
  toStringCache = null;
  super.append(str);
  return this;
 }

看到synchronized,在方法上面,说明是有线程安全的。

关于stringbuffer基础知识点扩展:

StringBuffer

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线

程安全的情况下,则必须使用 StringBuffer 类

字符串 的内容一旦创建,则不允许改变,如果一旦改变,则会创建一个新的字符串对象。

字符串的内容一般不会随意的修改,因为每修改一次都会创建一个新的字符串对象。

如果需要修改字符串的内容:建议使用字符串缓冲区类。

StringBuffer(字符串缓冲区类): 存储字符的集合容器。

笔试题: 使用Stringbuffer无参的构造方法默认的初始化容量是多少? 当容量不够用时会自动增长多少?

StringBuffer的底层是维护了一个字符数组,存储字符的时候实际上是往该字符数组中存储 的,

而字符数组的初始化容量是16, 当容量不够使用时,自动增长1倍。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...