StringBuffer是线程安全的,但是StringBuilder是非线程安全的,为什么?StringBuilder和StringBuffer都继承AbstractStringBuilder类,但是StringBuffer在方法上进行加锁处理,加锁后运算的方法是线程安全的所以,StringBuffer在线程问题上更安全

那么StringBuidler在多线程环境下为什么会报ArrayIndexOutOfBoundsException异常?


我们可以看到,扩容的算法就是添加了一个新的集合

如果两个线程同时执行,很有可能,两个线程扩容为5,但是当前所属的count变成了6就会出现数组越界的情况