Java中StringBuilder为何不适用于多线程环境?
- 内容介绍
- 文章标签
- 相关推荐
本文共计999个文字,预计阅读时间需要4分钟。
引言+面试官:StringBuilder和StringBuffer的区别在哪里?我:StringBuilder不是线程安全的,StringBuffer是线程安全的。面试官:那StringBuilder不安全的点在哪里?我:……(省略部分对话内容)
引言
面试官:StringBuilder和StringBuffer的区别在哪?
我:StringBuilder不是线程安全的,StringBuffer是线程安全的
面试官:那StringBuilder不安全的点在哪儿?
我:。。。(哑巴了)
在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于StringBuilder为什么不安全从来没有去想过。
分析
在分析这个问题之前我们要知道StringBuilder和StringBuffer的内部实现跟String类一样,都是通过一个char数组存储字符串的,不同的是String类里面的char数组是final修饰的,是不可变的,而StringBuilder和StringBuffer的char数组是可变的。
本文共计999个文字,预计阅读时间需要4分钟。
引言+面试官:StringBuilder和StringBuffer的区别在哪里?我:StringBuilder不是线程安全的,StringBuffer是线程安全的。面试官:那StringBuilder不安全的点在哪里?我:……(省略部分对话内容)
引言
面试官:StringBuilder和StringBuffer的区别在哪?
我:StringBuilder不是线程安全的,StringBuffer是线程安全的
面试官:那StringBuilder不安全的点在哪儿?
我:。。。(哑巴了)
在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于StringBuilder为什么不安全从来没有去想过。
分析
在分析这个问题之前我们要知道StringBuilder和StringBuffer的内部实现跟String类一样,都是通过一个char数组存储字符串的,不同的是String类里面的char数组是final修饰的,是不可变的,而StringBuilder和StringBuffer的char数组是可变的。

