如何在java中保证stringbuffer线程安全

  介绍

本篇文章给大家分享的是有关如何在java中保证stringbuffer线程安全、小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1. stringbuffer线程说明

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

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

2。同步锁的应用方式

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

public  synchronized  StringBuffer 附加(int 我),{   时间=toStringCache 才能;零;   super.append才能(我);   return 才能;;   以前,}

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

public  static  synchronized  void 测试(){   ,,我+ +;   以前,}

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

, public  boolean  contentEquals (CharSequence  cs), {//才能,Argument  is  a  StringBuffer, StringBuilder   同步才能(cs), {   ,,,,return  nonSyncContentEquals (cs) (AbstractStringBuilder);   ,,},   以前,}

3。线程安全分析

StringBuffer 缓冲=,new  StringBuffer ();   buffer.append才能(“d");   然后进入的动作里面看看   @Override   ,public  synchronized  StringBuffer 附加(String  str), {   时间=toStringCache 才能;零;   super.append才能(str);   return 才能;;   之前,}

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

关于stringbuffer基础知识点扩展:

<强> stringbuffer

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

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

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

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

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

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

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

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

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

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

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

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

以上就是如何在Java中保证stringbuffer线程安全、小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

如何在java中保证stringbuffer线程安全