栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java中stringbuffer线程安全分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java中stringbuffer线程安全分析

在对于一些类作用于线程时,安全系数高的线程更推荐大家使用,在尽可能的程度上降低程序出错的可能性。对于本篇所要提到的StringBuffer而言,在其缓冲区中有多个线程的存在,我们在查询其内部方法时发现了锁的存在。现在我们就StringBuffer线程、锁的应用、线程安全分析逐步带来介绍。

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,在方法上面,说明是有线程安全的。

以上就是java中stringbuffer线程安全分析,相信大家通过查看代码,发现了锁的存在,从而印证stringbuffer线程运行时是安全的,大家在使用的时候多多少少会更为放心。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/15089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号