多线程:synchronized和volatile

线程的生命周期:

多线程:synchronized和volatile


线程间通信:

1.共享内存,显式

2.消息传递,隐式(wait,notify)

synchronized和volatile

通过volatile修饰的变量进行写操作时,JVM会向处理器发送一条带Lock前缀的指令,将这个变量所在缓存的数据写回系统内存

多处理器下,会实现缓存一致性协议,保证各处理器缓存一致性

volatile可以保证原子性,可见性,但不能保证复合操作的原子性

synchronized 互斥性、可见性、可重入锁

基于JVM实现,通过monitor enter获得锁,其他线程未获得锁进入synchronized queue,monitor exit释放,通知其他线程出队列