JMM是为了解决多线程对共享数据的读写一致性问题;
Android中不会去考虑QPS,高并发的问题,这个是后端需要去考虑的;
Android最主要处理并发安全性问题;
一核CPU处理一个线程;
所有的系统执行都是单线程串行;
多核之间存在并行;
在linux下,单核最大线程1000;
windows,单核最大2000个线程;
高并发体系下有三问题:可见性,有序性,原子性;
JMM内存模型八大原子性:
read(读取):从主内存中读取数据
load(载入):从主内存读取数据写入工作内存(高速缓存)
use(使用):从工作内存中读取数据来计算
assign(赋值):将计算好的数据重新赋值到工作内存
store(存储):将工作内存的数据写入主内存
write(写入):将存入的数据变量值赋值给主内存中的共享变量
lock(加锁):将主内存变量加锁
unlock(解锁):将主内存变量解锁

Volatitle有总线嗅探机制,当一个线程改变了当前的变量,在另外线程中使用的当前变量就会失效,失效之后再从内存中重新读取。就会有新的改变的变量值了,这就是volatitle的作用,具有监听的效果。
Lock锁定内存区域,会导致所有的线程所引用的这个变量失效,Lock是cpu指令集的指令,是汇编,它是由厂商提供的,安卓的厂商可能有所不同。
网友评论