JMM(Java内存模型)

JMM主要是为了规定线程和内存之间的关系,根据JMM的设计,系统存在一个主内存,Java中所有变量都存储在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存,工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中执行的,线程之间无法相互直接访问,变量传递均需要通过主存完成

工作内存与主内存交互的八种操作
lock、unlock、read、load、use、assign、store、write
Java内存模型-同步规则(动作具有原子性,不可分割)
1)不允许read和load、store和write操作之一单独出现
2)不允许一个线程丢弃最近的assign操作
3)不允许一个线程回写没有修改的变量到主内存
4)变量只能在主内存中产生
5)一个变量在同一时刻只能被一个线程对其进行lock操作
6)对变量执行lock操作,就会清空工作空间该变量的值
7)不允许对没有lock的变量执行unlock操作
8)对一个变量执行unlock之前,必须先把变量同步回主内存中

并发内存模型的实质:
原子性
可见性
有序性

posted @ 2020-11-02 21:39  走过路过哭过  阅读(190)  评论(0)    收藏  举报