Java并发
文章平均质量分 96
1a31e4
be delusional
展开
-
Java并发-JUC原子类详解
CAS的全称为Compare-And-Swap,直译就是对比交换。是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值,经过调查发现,其实现方式是基于硬件平台的汇编指令,就是说CAS是靠硬件实现的,JVM只是封装了汇编调用,那些AtomicInteger类便是使用了这些封装后的接口。简单解释:CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较下在旧值有没有发生变化,如果没有发生变化,才交换成新值,发生了变化则不交换。原创 2024-02-25 19:12:00 · 701 阅读 · 2 评论 -
Java并发-关键字:volatile详解
我们从一个最经典的例子来分析重排序问题。大家应该都 很熟悉单例模式的实现,而在并发环境下的单例实现方式,我们通常可以采用双重检查加锁(DCL)的方式来实现。现在我们分析一下为什么要在变量singleton之间加上volatile关键字。但是由于操作系统可以对指令进行重排序如果是这个流程,多线程环境下就可能将一个未初始化的对象引用暴露出来,从而导致不可预料的结果。因此,为了防止这个过程的重排序,我们需要将变量设置为volatile类型的变量。原创 2024-02-25 18:37:59 · 608 阅读 · 1 评论 -
Java并发-关键字: synchronized详解
示例1@Override// 同步代码块形式——锁为this,两个线程使用的锁是一样的,线程1必须要等到线程0释放了该锁后,才能执行System.out.println("我是线程" + Thread.currentThread().getName());try {System.out.println(Thread.currentThread().getName() + "结束");t1.start();t2.start();我是线程Thread-0Thread-0结束。原创 2024-02-25 17:55:19 · 1329 阅读 · 0 评论 -
java并发-基础知识
可见性原子性有序性。原创 2024-02-25 17:45:29 · 967 阅读 · 1 评论