Java并发编程基础
一.并发基础
并发案例:
计数:200个用户并发请求,接收5000个请求,计数总数少于5000.可能会不一样.
思考:
并发问题,本地测试结果与上线并发结果不同.
并发编程基础
CPU多级缓存
CPU多级缓存 - 乱序执行优化
处理器为提高运算速度而违背代码原有顺序的优化
Java内存模型(Java memory model,JMM)
JMM:堆,线程栈.
JVM:JMM
CPU<==>CPU cache<==>Main Memory
Java内存模型抽象结构:
由此可知,线程安全性:因为变量的副本是私有不可见的导致线程安全出现问题.所以并发条件下需要考虑数据安全性.
Java内存模型-同步八种操作
Lock(锁定):作用于主内存的变量,把一个变量标识为一条线程独占状态.
unlock(解锁):作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定.
read(读取):作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的load动作使用.
load(载入):作用于工作内的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中.
use(使用):作用于工作内存的变量,把工作内存中的一个变量值传递给执行引擎.
assign(赋值):作用于工作内存的变量,它把一个从执行引擎接收到的值赋值给工作内存的变量.
store(存储):作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存中,以便随后的write的操作.
write(写入):作用于主内存的变量,它把store操作从工作内存中的一个变量的值传送到主内存的变量中.
Java内存模型-同步规则
并发的优势与风险