好的,一定来,谢谢提问
其实我的理解StringBuffer与StringBuilder的区别应该是有锁和没锁的区别;
StringBuffer这个容器有锁,一个线程想要操作这个容器的时候需要判断是否有其他线程在对这个线程进行操作,如果有,则等待,所以不会有因为多个线程对同一个容器进行操作导致的安全问题,当然因为每个线程在访问这个容器之前都要进行锁的判断,所以相对效率就会低些。
而StringBuilder容器则去掉了锁,这样一个线程对这个容器进行操作之前就不需要进行判断这个步骤了,提高了运行效率,这样也导致了多个线程同时操作同一个容器的可能性,于是就产生了安全问题,比如不同线程对StringBuilder中某一段子串进行重复删除之类等等。 |