JUC多线程及高并发-----volatile

不如就利用孤单一人的时间,使自己变得更优秀,给别人一个惊喜,也给自己一个好的交代。

JUC多线程及高并发(面试题笔记1)

JUC-----------------Java.util.concurrent
concurrent------高并发:很多线程同时访问同一个资源;
(并行:很多线程同时进行);

package Java.util.concurrent.atomic
class AtomicInteger---------原子整型

1.请谈谈你对volatile的理解?
答:volatile是Java虚拟机提供的轻量级的同步机制,具有三大特性:

  1. 保证可见性;
  2. 不保证原子性,
  3. 禁止指令重排
深入理解特性:

前提::::JVM的基层是JMM(内存模型----Java memory model),它简单理解为对变量进行规定规范处理.
硬盘 < 内存 < cpu
硬盘------数据主要存储位置
内存------部分数据存储位置
cpu--------用于计算
内存和cpu之间为缓存cache

JMM关于同步规定:

  1. 线程解锁前,必须把共享变量的值刷新回主内存
  2. 线程加锁前,必须读取主内存的最新值到自己的工作内存
  3. 加锁解锁是同一把锁

JUC多线程及高并发-----volatile_第1张图片

这是因为当一个线程完成之后,其他线程需要知道它所变化的数值,而不是之前拷贝的数据。这时就需要可见性,来知道获取消息。
JUC多线程及高并发-----volatile_第2张图片

你可能感兴趣的:(java,2019面试题,JUC)