StringBuffer可实现同步,StringBuilder线程不安全。
翻译自Java API英文文档
本质
StringBuffer 和 StringBuilder 均表示一个可变字符序列
这个字符序列是一个类似 String 的字符串缓冲区,但能被修改
区别
当字符串缓冲区用于单线程环境时,采用 StringBuilder
若需要同步时,则使用 StringBuffer,因为 StringBuffer 是线程安全的
也就是说,StringBuilder 是 StringBuffer 在单线程环境中的替代品
谁更快些
因为 StringBuffer 是线程安全的, 要确保同步机制,则性能相对降低
因此, StringBuilder 速度更快些
线程安全和多次操作
StringBuffer是线程安全,而StringBuilder是线程不安全的
对于安全与不安全没有深入的理解情况下,易造成这样的错觉
如果对于StringBuffer的操作均是线程安全的
然而,JAVA给你的保证的线程安全,是说它的方法是执行是排它的
而不是对这个对象本身的多次调用情况下,还是安全的