Java代码证明StringBuilder是线程不安全的
时间: 2023-06-01 13:05:38 浏览: 97
StringBuilder的确是线程不安全的,但我们可以通过使用synchronized关键字来实现线程安全的操作。下面是一个Java代码的示例:
```java
public class StringBuilderDemo {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
Thread t1 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
synchronized (sb) {
sb.append("A");
}
}
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
synchronized (sb) {
sb.append("B");
}
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(sb.toString().length());
}
}
```
在上面的代码中,我们使用了synchronized关键字来对StringBuilder进行加锁,保证了多线程操作的线程安全性。
阅读全文