StringBuffer和StringBuilder区别?
一. 线程安全
StringBuffer:线程安全,StringBuilder:线程不安全
因为 StringBuffer 所有公开方法都是 synchronized 修饰的,而 StringBuilder 没有
1.1 StringBuffer
public synchronized StringBuffer append(StringBuffer sb) {
this.toStringCache = null;
super.append(sb);
return this;
}
1.2 StringBuilder
public StringBuilder append(StringBuffer sb) {
super.append(sb);
return this;
}
二. 性能
由于 StringBuffer 的方法都是同步的,它在执行时可能会引起线程阻塞,所以性能上可能会不如 StringBuilder 。而 StringBuilder 不需要进行同步处理,因此性能通常会比 StringBuffer 更好。
三. 作用领域
总的来说,在单线程环境中,StringBuilder 更适合使用,因为它更轻量且性能更好。在多线程环境中,如果需要线程安全,可以使用 StringBuffer,但如果不需要线程安全,则同样可以使用 StringBuilder 以获得更好的性能。