StringBuffer和StringBuilder的线程安全问题分析
Posted lwf6869
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StringBuffer和StringBuilder的线程安全问题分析相关的知识,希望对你有一定的参考价值。
StringBuffer 字符串变量(线程安全 在多线程的状况能够保证线程的安全运行)
StringBuilder 字符串变量(非线程安全 运行更加迅速)
/*对待线程安全问题,我们可以把一个字符串的改变看成两部来实现,首先就是字符串的索引位置存放元素
* 然后继续增大Size的值 在单线程的情况下如果size等于0那么添加一个元素的步骤就是将元素放在位置0,然后size=1
* 在单线程中这样做是没有任何问题的
* 但是:多线程的话 -> 线程a将元素放在位置0 但是此时的线程B也在抢夺CPU 假设抢夺成功 那么这个时候a线程的size还没有运行到增加的那一步
* 同事,b线程在位置0又放入一个元素,这就回将a线程放入的元素覆盖掉
* 所以:我们来看看实际的情况就是两个元素都是放在位置0但是实际元素只有一个,size却等于2 这就造成了线程不安全的问题*/
参阅了下文作者的分析
以上是关于StringBuffer和StringBuilder的线程安全问题分析的主要内容,如果未能解决你的问题,请参考以下文章
StringBuffer 和 StringBuilder 总结