文章目录 什么是线程不安全 1、原子性 2、可见性 3、指令重排(编译器优化) 4、cup的抢占式执行(万恶之源) 5、多个线程同时操作了一个变量 什么是线程不安全 线程不安全就是线程执行的结果与我们预期的结果不一致。比如一个计算方法,正确的答案是+XXX,而最终的执行结果却是-XXX,这样就是线程不安全的。 造成线程不安全的主要有以下五个原因: 1、原子性 比如的 n++,其实是由三步操作组成的: 1. 从内存把数据读到 CPU 2. 进行数据更新 3. 把数据写回到 CPU 如果一个线程正在对一个变量操作,中途其他线程插入进来了,如果这个操作被打断了,结果就可能是错误的 2、可见性