JUC多线程及高并发

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

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

package Java.util.concurrent.atomic
class Atomicteger---------原子引用

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

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

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

JMM关于同步规定:

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

JUC多线程及高并发

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