为什么StringBuilder是线程不安全的
1、案例测试
通过一个案例看一下效果,执行方法如下:
public static void testBuilder() {
StringBuilder builder = new StringBuilder();
for(int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for(int j = 0; j < 1000; j++) {
builder.append("a");
}
}
}).start();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("线程不安全:"+builder.length());
}
这个方法需求是创建10个线程,每个线程内执行1000次循环,在循环内拼接字符串a
,然后再睡100毫秒,最后打印出拼接结果的长度,按正常的输出思路