先说结论:
String和StringBuffer是线程安全的,Stringbuilder是非线程安全的。
String中用final关键词修饰字符数组来保存字符串:private final char value[](JAVA 9以后String类改用byte数组储存字符串 private final byte[] value),因此String对象是不可变的,也就可以理解为常量,线程安全。
AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共⽗类,定义了⼀些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共⽅法。StringBuffer 对⽅法加了同步锁或者对调⽤的⽅法加了同步锁,所以是线程安全的。StringBuilder 并没有对⽅法进⾏加同步锁,所以是⾮线程安全的。