我有一个 String 和 ThreadPoolExecutor 来改变这个 String 的值。只需查看我的示例:
String str_example = "";
ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10, 30, (long)10, TimeUnit.SECONDS, runnables);
for (int i = 0; i < 80; i++){
poolExecutor.submit(new Runnable() {
@Override
public void run() {
try {
Thread.sleep((long) (Math.random() * 1000));
String temp = str_example + "1";
str_example = temp;
System.out.println(str_example);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
所以在执行这个之后,我得到了类似的东西:
1
11
111
1111
11111
.......
所以问题是:如果我的 String 对象具有 volatile 修饰符,我只希望得到这样的结果。但我有这个修饰符和没有相同的结果。