谈谈 StringBuffer 和 StringBuilder 的历史故事

1.前言

  众所周知,StringBuffer 是线程安全的 ,而StringBuilder 不是线程安全的  ,但是 StringBuilder 速度会更快。

事实上 作为一个字符串拼接 方法 ,在线程安全的应用场景几乎没有 【在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,

则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装。】,但考虑到线程安全,首先应该相对加锁,

可是有了 锁 ,字符串拼接 就没必要一定是线程安全的了 ,会极大的拖慢运行速度 【这就是以前为什么说java 运行速度慢的 一个重要因素】,

因此应该 使用 StringBuilder 。

2.那为什么会有StringBuffer的存在?

  原因很简单 ,因为最早是没有 StringBuilder 的,那时候只有StringBuffer。

  sun的人不知处于何种愚蠢的考虑,决定让stringbuffer是线程安全的,然后大约10年之后,人们终于意识到这是一个多么愚蠢的决定,

意识到在这10年之中这个愚蠢的决定为java运行速度慢这样的流言贡献了多大的力量,于是,在jdk1.5的时候,终于决定提供一个非线程安

全的StringBuffer实现,并命名为StringBuilder。



原文地址:https://www.cnblogs.com/c2g5201314/p/13111660.html