CAS(compare and swap)

CAS(compare and swap)
多线程三大特性
在程序中使用多线程的目的是什么?

1、提高效率,增加任务的吞吐量
2、提升CPU等资源的利用率,减少CPU的空转

多线程的应用在日常开发中很多,带来了很多的便利,但也有要注意问题,一般主要从这三个方面考虑

一、原子性

原子性是指一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。

二、可见性

可见性是指当一个线程修改了共享变量后,其他线程能够立即得知这个修改。

三、一致性

有序性是指程序在执行的时候,程序的代码执行顺序和语句的顺序是一致的。那为什么会出现不一致的情况呢?这是由于重排序的缘故。

在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序;重排序不会影响单线程的执行结果,但是在并发情况下,可能会出现诡异的BUG。

CAS
CAS 的意思是 compare and swap,比较并交换。cas的引入是为了解决java锁机制带来的性能问题。锁机制存在以下问题:

(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。

(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。

(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值