StringBuffer StringBuilder线程安全的理解

Java code

?


1

2

3

4

5

6

7

8

/**

     * @see     java.lang.String#valueOf(java.lang.Object)

     * @see     #append(java.lang.String)

     */

    public synchronized StringBuffer append(Object obj) {

    super.append(String.valueOf(obj));

        return this;

    }

StringBuffer中大部分方法都有synchronized 关键字,保证了在多线程的情况下对统一资源使用的安全性

Java code

?


1

2

3

4

5

6

7

8

/**

     * @see     java.lang.String#valueOf(java.lang.Object)

     * @see     #append(java.lang.String)

     */

    public synchronized StringBuffer append(Object obj) {

    super.append(String.valueOf(obj));

        return this;

    }

StringBuffer中大部分方法都有synchronized 关键字,保证了在多线程的情况下对统一资源使用的安全性

时间: 2024-10-05 05:21:45

StringBuffer StringBuilder线程安全的理解的相关文章

简单的理解 StringBuffer/StringBuilder/String 的区别

StringBuffer/StringBuilder/String 的区别 这个三类之间主要的区别:运行速度,线程安全两个方面. 速度方面(快到慢): StringBuilder > StringBuffer > String String 慢的原因: String为字符串常量,不可被改变,StringBuilder和StringBuffer为字符串变量,可以被改变. 代码实例: 1 String demo="测试内容"; 2 System.out.println(demo

java String,StringBuffer,StringBuilder的区别

StringBuilder.StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...).只是StringBuffer会在方法上加synchronized关键字,进行同步. 最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer ? 这句话并不理解. 1 String String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的. String类的包

String StringBuffer StringBuilder之间的区别

String:字符串常量 StringBuffer:字符串变量 StringBuilder:字符串变量 对于这句话的理解你可能会产生这样一个疑问  ,比如这段代码: 1 String s = "abcd";2 s = s + 1;3 System.out.print(s);  //abcd1 我们明明就是改变了String型的变量s的,为什么说是没有改变呢? 其实这是一种欺骗,JVM是这样解析这段代码的:首先创建对象s,赋予一个abcd,然后再创建一个新的对象s用来执行第二行代码,也就

JavaAPI学习(一):API && String类 && Stringbuffer && StringBuilder

一.API 1.API:英文 Aplication Progrmmer Iteface 的缩写,即应用编程接口 由官方或第三方提供的能实现特点功能的程序封装包,包含各功能类,接口,以及实现方法等:很多基础功能不需要再重写,直接调用即可:但因为Java的API十分丰富,常用的基础API就有很多,也需要花时间熟悉这些API的功能和使用方法: 2.常用API  String类, StringBuffer, StringBuilder ,集合(list set map) ,包装类,日历日期,IO流 ,异

转:String StringBuffer StringBuilder区别

转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸裸的站在我们这些Java色狼面前了.嘿嘿.... 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却不是普通的类哦!!! [镜头1] String对象的创建       1.关于类对象的创建,很普通的一种方式就是利用构造器,

在JAVA中,String,Stringbuffer,StringBuilder 的区别

首先是,String,StringBuffer的区别 两者的主要却别有两方面,第一是线程安全方面,第二是效率方面 线程安全方面: String  不是线程安全的,这意味着在不同线程共享一个String的时候,需要先进行同步,否则会出现不同线程获得的值不同的情况,即线程不安全 StringBuffer 是线程安全的,在不同线程中共享的时候会自动同步,不需要手动同步. 效率方面: String在每次更改的时候均是重新建立一个变量,再将更改后的值赋予其中,多次更改之后会触发JVM的GC机制,占用资源

[源码]String StringBuffer StringBudlider(2)StringBuffer StringBuilder源码分析

纵骑横飞 章仕烜 昨天比较忙 今天把StringBuffer StringBulider的源码分析 献上 在讲 StringBuffer StringBuilder 之前 ,我们先看一下 它们共同的老祖宗 AbstractStringBuilder 这是 StringBuilder StringBuffer 的根基 再看看 这两个实现类 里边有什么 很显然,这两个东西什么都没写吧 我们看看 另一个门派的 String 看出 为什么 我们说String 对象是不可变的 StringBuilder

java ——String , StringBuffer, StringBuilder类

一.String类概述 1.String对象一旦创建就不能改变. 2.字符串常量池. 字符串常量池的特点:池中有则直接使用,池中没有则创建新的字符串常量. 例1: “==”  比较两个对象是否引用同一实例 public class StringDemo { public static void main(String args[]) { StringDemo1(); } public static void StringDemo1() { String str1="abcd"; Str

java StringBuffer StringBuilder

两者的区别,相信大家都已经很清楚,StringBuffer是线程安全的,所以单线程操作下,效率比较低,新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高. 最近使用StringBuffer时用到了stringbuffer的清空,看到了该帖子 http://blog.163.com/[email protected]/blog/static/7751781920115102823511/ 里面对stringbuffer的清空的两个方法进行了效率的比