今天被问的一个问题

前置条件:面试官已说明StringBuilder和StringBuffer的区别在于线程安全
问:那java为什么提供StringBuffer和StringBuilder这两个进行string操作的类? 直接提供线程安全的类不就可以了吗?

请问大家,该问题如何回答比较合适?
全部评论
我记得有个腾讯大佬的面经里也问的这个,好像是有关偏向锁和锁的膨胀之类的
点赞 回复 分享
发布于 2019-04-08 21:29
单个线程在1.7引入偏向锁 两者性能么区别  多线程buffer才安全
点赞 回复 分享
发布于 2019-04-08 21:32
因为保证线程安全是有代价的,需要加锁操作。而很多情况下我们只是在单线程下使用相关操作,不需要保证线程安全。所以提供了StringBuilder。
点赞 回复 分享
发布于 2019-04-08 21:34
个人愚见:         在单线程环境下,StringBuilder比StringBuffer的效率提高10%-15%,数据量大的时候可以节约相当可观的时间,也就是在不需要保证线程安全的情况下,使用StringBuilder效率更高,
点赞 回复 分享
发布于 2019-04-08 21:37

相关推荐

点赞 9 评论
分享
牛客网
牛客企业服务