线程安全问题的原因和解决方案 文章目录 线程安全问题的原因和解决方案一条java语句,不一定是原子的一个线程对共享变量值的修改,不能够及时地被其他线程看到 一条java语句,不一定是原子的 n++,其实是由三步操作组成的: 从内存把数据读到 CPU把数据写回到 CPU进行数据更新 一个线程对共享变量值的修改,不能够及时地被其他线程看到 线程之间的共享变量存在主内存每个线程都有自己的工程内存当某个线程要读取一个共享变量时,会先把共享变量拷贝到自己的工作内存中,再从工作内存中读取数据当某个线程要修改一个共享变量时,会先修改自己的工作内存中的数据,再写回主内存 根据工作原理,这就会产生读取和修改数据的时间差