摘要:
##volatile java中的关键字,可保证并发编程中的可见性和有序性,不能保证原子性。 不能保证原子性的原因: java中只有对基本类型变量的赋值和读取是原子操作,比如 i=1。但是像 j=i 或者 i++ 这样的操作都不是原子操作,因为它们都进行了多次原子操作,比如 i++ 分为 i+1, 阅读全文
摘要:
#1、CAS(compare and swap) 理解总线锁和缓存锁后,对CAS就比较好理解了,这不是java特有的,而是操作系统需要保证的。cas指令在intel cpu上成为CMPXCHG指令,他的作用是将指定内存地址的值 与 所给的某个值相比,如果相等,则将其内容替换为指令中提供的新值,如果不 阅读全文
摘要:
#1、缓存一致性问题? 为了压榨cpu性能,解决cpu算数逻辑单元(ALU) 直接访问 内存 速度低的问题,cpu 内部有了 高速缓存,把内存中的数据读取到内部 高速缓存 中来,避免直接访问内存,以加快 ALU 频繁读取的速度。我们假设在一台 pc 上只有一个单核的 cpu 和 一份内部高速缓存,那 阅读全文
摘要:
我们知道现在的 CPU 至少都是两个核心以上的 多核心CPU 了,但是 Intel 还有个很怪的东西,叫做 CPU 的超线程 (Hyper-Threading) 功能!我们知道现在的 CPU 指令周期都太快了,因此 运算核心 经常处于闲置状态下。 而我们也知道现在的 系统大多都是 多任务的系统, 同 阅读全文
摘要:
cpu超线程技术 锁的四种状态和锁升级过程 时钟中断 用户态和内核态 为什么系统调用比普通函数开销大(用户态->内核态开销大)?? 怎么理解java内存模型 cpu高速缓存出现原因 解决cpu高速缓存技术潜在问题:缓存一致性问题 CPU层面的总线锁和缓存锁 lock指令底层是总线锁还是缓存锁 jav 阅读全文