当前位置: 首页 > wzjs >正文

网站建设中倒计时源码大学生网络营销策划方案书

网站建设中倒计时源码,大学生网络营销策划方案书,电子政务门户网站建设的意义,山东网站建设公司电话目录 什么是 CAS CAS 是怎么实现的 CAS 有哪些应用 1. 实现原子类 2. 实现自旋锁 3. CAS 的 ABA 问题 什么是 CAS // 能够比较和交换某个寄存器中的值和内存中的值, 看是否相等, 如果相等, 则把另一个寄存器中的值和内存中的值进行交换 // CAS伪代码 boolean CAS(addres…

目录

什么是 CAS

CAS 是怎么实现的

CAS 有哪些应用

1. 实现原子类

 2. 实现自旋锁

3. CAS 的 ABA 问题


什么是 CAS

// 能够比较和交换某个寄存器中的值和内存中的值, 看是否相等, 如果相等, 则把另一个寄存器中的值和内存中的值进行交换

// CAS伪代码

boolean CAS(address, expectValue, swapValue) {if (&address == expectedValue) {&address = swapValue;return true;}return false;
}

// CAS 其实是由一个原子的硬件指令完成的 (原子性)

// 当多个线程同时对某个资源进行 CAS 操作, 只能有一个线程操作成功. 但是并不会阻塞其他线程, 其他线程只会收到操作失败的信号

// CAS 可以视作是一种乐观锁(或者说 CAS 是乐观锁的一种实现方式) 

// 基于CAS 又衍生出一套 "无锁编程"

CAS 是怎么实现的

// 针对不同的操作系统, JVM 用到了不同的 CAS 实现原理, 简而言之 : 是因为硬件给予了支持, 软件层面才能做到

CAS 有哪些应用

1. 实现原子类

// 标准库中提供了 java.util.concurrent.atomic 包, 里面的类都是基于这种方式来实现的.典型的就是Atomiclnteger 类, 其中的 getAndIncrement 相当于 i++ 操作

AtomicInteger atomicInteger = new AtomicInteger(0);
// 相当于 i++
atomicInteger.getAndIncrement();

1.1 伪代码实现 

class AtomicInteger {private int value;public int getAndIncrement() {int oldValue = value;while ( CAS(value, oldValue, oldValue+1) != true) {oldValue = value;}return oldValue;}
}

 2. 实现自旋锁

// 自旋锁伪代码

public class SpinLock {private Thread owner = null;public void lock() {while(!CAS(this.owner, null, Thread.currentThread())) {}}public void unlock() {this.owner = null;}
}

3. CAS 的 ABA 问题

// CAS 关键要点, 是比较 寄存器1 和 内存 的值, 通过这里的是否相等, 来判定 内存的值 是否发生了改变. 如果内存的值变了, 存在其他线程进行了修改; 如果内存的值没变, 没有别的线程修改, 接下来进行的修改就是安全的

// 如果这里的值没变, 就一定没有别的线程修改嘛?

// A-B-A : 另一个线程, 把变量的值从 A -> B, 又从 B -> A , 此时本线程区分不了, 这个值是始终没变, 还是变化又回来了的情况

// 大部分情况下, 就算出现 ABA 问题, 也没啥太大影响, 但是如果遇到一些极端场景下就会出现问题

// 如果约定, 值只能单向变化, 增加一个版本号这个新的属性, 让版本号只能增长不能减小, 只要数据修改, 版本号就一定要增加, 这时我们只需要判定版本号是否相等, 若相等就是数据没有被修改

// 实际开发中, 一般不会直接使用 CAS, 都是用 库里已经封装好的组件(像原子类这种)

  

http://www.dtcms.com/wzjs/398006.html

相关文章:

  • 免费二级域名注册网站电商具体是做什么的
  • 电商网站建设教程自媒体推广平台
  • 做影视网站该怎么发展cps广告联盟平台
  • 西安网络推广平台公司石狮seo
  • vue做的网站有什么千万别手贱在百度上搜这些词
  • 分类信息网站建设方案百度极速版推广员怎么申请
  • 教育中介公司网站建设费用今日头条(官方版本)
  • 快团团小程序官网新手seo要学多久
  • 称为泰州seo排名扣费
  • by68777最新域名查询免费seo搜索优化
  • 架设时时彩网站需要怎么做十大seo公司
  • 有机农产品网站开发方案企业建站模板
  • 如何建设网站 知乎简单的seo
  • 如何更改wordpress模板seo常见优化技术
  • 凡科怎么建设网站新网站百度收录要几天
  • 济宁神华 网站建设2022年关键词排名
  • 有哪些做ppt用图片的网站有哪些问题seo搜索引擎优化是什么意思
  • 电脑做网站百度发视频步骤
  • 外包做网站需要多少钱亚马逊跨境电商开店流程及费用
  • 开发网站需要注意的安全问题广东seo推广外包
  • 中英文网站建设需要懂英语吗百度一下你就知道主页
  • 门业网站 源码本地推广最好用的平台
  • 三门峡网站开发怎么自己建立网站
  • php网站端口百度指数排名
  • 网站平台建设服务合同seo咨询河北
  • 有没有免费网站建设网站关键词搜索排名
  • 河西做网站微信朋友圈广告投放价格表
  • 网站开发与维护是学什么合肥网络推广软件
  • 镇江特色抖音seo怎么做的
  • 温州网站建设方案案例设计windows优化大师怎么用