一. 线程安全概念的引入
在多线程下和单线程下执行相同的操作结果相同时为线程安全。
对于多个线程,操作同一个共享数据(堆里边的对象,方法区中的数据,如静态变量):
如果都是读操作,也就是不修改值,这时不存在安全问题
如果至少存在写操作时,就会存在线程安全问题
二. 线程不安全的原因
1. 原子性
一组操作(一行或多行代码)是不可拆分的最小执行单位,就表示这组操作是具有原子性的
多个线程多次的并发并行的对一个共享变量操作时,该操作就不具有原子性
注意:我们在写的一行Java代码可能不是原子性的,因为它编译成字节码,或者由JVM把字节码翻译为机器码后就不是一行,也就是多条执行操作
经过一次n+&#