版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Android_Mrchen/article/details/82835161
1.为什么需要cpu cache:
cpu的频率太快了,快到主存跟不上,cpu常常需要等待主存,浪费资源。所以cache的出现,是为了解决cpu和内存之间速度的不匹配问题( cpu>cache>memory)
2.cpu cache有什么意义
1)时间局部性
2)空间局部性
3.cpu多级缓存 - 缓存一致性(MESI)
4.JMM(java 内存模型)
1)lock/unlock
5.并发的优势和风险
6.线程安全性——>atomic——>cas(Unsafe.compareAndSwapInt()):拿当前的值与底层的值对比,如果当前的值与底层的值一样时才进行累加操作(工作内存的值 不一样和主内存的值一样)
1)原子性 - 对比
synchronize:不可中断锁,适合竞争不激烈,可读性好
lock:可中断锁,多样化同步,竞争激烈时能维持常态
Atomic:竞争激烈时能维持常态,比lock性能好;只能同步一个值
volatile:适用于状态标识、