没看太明白,是说init这个static变量被分别加载到A和B两个线程的工作缓存中,因为init变量没有被volatile修饰,所以B线程对init值的修改刷回主内存后,对A线程中工作缓存中的init值没有影响,因为A线程没有执行println(init),所以A线程不会重新载入主内存中的值,就一直是0,是这样子吗
static变量加载到了不同线程的各自工作缓存中,为什么B线程对init变量值的修改在A线程中可见了,这边并未使用volatile修饰init。但是在A线程中添加局部变量后,B线程对init值的修改就对A线程的init值没有影响了,这时A线程中的init一直是0
62,625
社区成员
307,257
社区内容
加载中
试试用AI创作助手写篇文章吧