多线程的三大特性:
- 原子性,独一无二,一致性,保证线程安全问题
- 可见性:java内存模型
- 有序性:join,wait,notify 等可以通过多线程的这些方法进行控制它的执行顺序
发生多线程安全问题:
多个线程,同时共享同一个全局变量,做写操作时,会发生线程安全问题
java内存模型和java内存结构
java内存模型属于多线程的可见性 jmm,决定了一个线程与另一个线程是否可见
- 主内存:主要存放全局变量
- 私有本地内存:主要存放本地线程私有的变量
java内存结构属于jvm中的内存结构
volatile 关键字:保证多个线程可见,但不保证线程的原子性
atomicInteger 可以可以保证线程的原子性,安全(1.5jdk并发包的)