StringBuffer和StringBuilder的区别在哪里?
StringBuffer是线程安全的,StringBuilder是线程不安全的。
那么StringBuilder不安全在哪里?在想这个问题前,我们要知道StringBuffer和StringBuilder的内部实现和String类是一样的,都是通过一个char数组存储字符串,不同的是String类的char数组是final修饰的,是不可变的;但是StringBuffer和StringBuilder的char数组是可变的。
例子:
多线程操作StringBuilder对象
public class StringBuilderDemo{
public static void main(String[] args) throws InterruptedException{
StringBuilder sBuilder = new StringBuilder();
for(int i=0;i<10;i++){
new Thread(new Runnable(){
@Override
public void run(){
for(int j=0;j<1000;j++){
sBuilder.append("a");
}
}
}).start();
}
Thread.sleep(100);
System.out.println(sBuilder.length());
}
}
运行结果