StringBuffer源码分析

先说说StringBuffer中的一些特性,后面对这些特性进行有针对的分析:


1. StringBuffer 区别与String,长度可动态变化,追加是使用append()方法进行处理

 默认容量为16,



这里继承的是父类AbstractStringBuilder,其中动态变化的。



2. StringBuffer 实现CharSequence接口(字符操作)

    

3.StringBuffer是线程安全的。

看看源码就知道了,在StringBuffer中好多的方法都使用了synchronized 关键字

synchronized 方法控制对类成员的访问:每个实例都会对应一把锁,每个 synchronized 方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程方能获得该锁,重新进入可执行状态。这种机制确保了同一时刻对于每一个类实例,其所有声明为 synchronized 的成员函数中至多只有一个处于可执行状态(因为至多只有一个能够获得该类实例对应的锁),从而有效避免了类成员变量的访问冲突(只要所有可能访问类成员变量的方法均被声明为 synchronized)。  




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章