# 139. 多线程:混乱开始了

  • 线程修改数据,人多手杂,一个线程在改,另一个线程也在改。读取当前值,修改为新的值,写入新的值这三个步骤并非是连续执行的,可能有别的线程的代码乱入。而且现在计算机的 CPU 都有缓存,让问题就更不可预测。

TIP

栈上的数据是线程私有的,但是堆上的数据就是线程之间共享的。

当多个引用(比如说方法里的局部变量)指向同一个对象(堆里的数据)的时候,多个thread就就操作同一份数据了。