多线程:synchronized和volatile
线程的生命周期:
线程间通信:
1.共享内存,显式
2.消息传递,隐式(wait,notify)
synchronized和volatile
通过volatile修饰的变量进行写操作时,JVM会向处理器发送一条带Lock前缀的指令,将这个变量所在缓存的数据写回系统内存
多处理器下,会实现缓存一致性协议,保证各处理器缓存一致性
volatile可以保证原子性,可见性,但不能保证复合操作的原子性
synchronized 互斥性、可见性、可重入锁
基于JVM实现,通过monitor enter获得锁,其他线程未获得锁进入synchronized queue,monitor exit释放,通知其他线程出队列