Volatile相关知识点和JMM内存模型
谈谈对Volatile的理解
Volatile在单线程开发的用不到的,Volatile是Java虚拟机提供的轻量级的同步机制
Volatile的三大特性
保证可见性
不保证原子性
禁止指令重排
JMM是什么
JMM是java内存模型,英文全称为Java Memory Model,简称JMM,JMM本身是不存在的,是为了我们方便理解抽象化的一种概念,代表的是一组规则和规范,它定义了程序中各个变量的的访问方式
JMM关于同步规定
线程在解锁前,必须把共享变量的值刷新到主内存中
线程解锁前,必须读取主内存的最新值到线程的自己的工作内存中
加锁和解锁是同一把锁
JVM运行的基本单位是线程,每个线程创建是JVM都会为其创建一个工作内存,这个工作内存是线程私有的,java内存模型规定所有的变量都存在主内存中,主内存是共享内存区域,所有的线程都可以访问,但是线程对于共享变量的操作必须复制到自己线程内存中才能进行变量的操作,然后刷新到主内存中,线程之间的通信必须通过主内存来完成
这里解释两个概念,主内存和工作内存
主内存:主内存是计算机内存,就是我们常说的自己常说的4g内存,电脑卡了,加一个8g的内存条
工作内存: