Java内存模型
- Java内存模型的主要主要、目标是定义程序中各个变量的访问规则,即在虚拟机中将变量储存到内存和从内存中取出变量这样的底层细节。
- Java内存模型规定了所有变量都存储在主内存中(此处的主内存与介绍物理硬件时的主内存名字一样,两者也可以相互类比,但此处是虚拟机内存的一部分)。
- 每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量所有操作都必须在工作内存中的变量,线程间变量值的传递均需要通过主内存来完成。
volatile型变量的特殊规则
- 关键字volatile可以说说Java虚拟机提供的最轻量级的同步机制。
- 当一个变量定义为volatile之后,它将具备两种特性。第一保证次变了对所有线程的可见性:当一条修改了这个变量的值,新值对于其他线程来说是可以立即得知的。
- 使用volatile变量会禁止指令从新排序优化。
悲观锁
乐观锁
乐观锁更确切的说是一种冲突检测机制,
太混乱了,目前的功力不够,以后再补