StringBuffer和StringBuilder的线程安全问题分析

StringBuffer 字符串变量(线程安全 在多线程的状况能够保证线程的安全运行)
StringBuilder 字符串变量(非线程安全 运行更加迅速)

/*对待线程安全问题,我们可以把一个字符串的改变看成两部来实现,首先就是字符串的索引位置存放元素
* 然后继续增大Size的值 在单线程的情况下如果size等于0那么添加一个元素的步骤就是将元素放在位置0,然后size=1
* 在单线程中这样做是没有任何问题的
* 但是:多线程的话 -> 线程a将元素放在位置0 但是此时的线程B也在抢夺CPU 假设抢夺成功 那么这个时候a线程的size还没有运行到增加的那一步
* 同事,b线程在位置0又放入一个元素,这就回将a线程放入的元素覆盖掉
* 所以:我们来看看实际的情况就是两个元素都是放在位置0但是实际元素只有一个,size却等于2 这就造成了线程不安全的问题*/


参阅了下文作者的分析

猜你喜欢

转载自www.cnblogs.com/LWF6869/p/12417062.html