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

自行车网站模板网站架构图用什么画

自行车网站模板,网站架构图用什么画,wordpress上传word,wordpress 主题教程电子书AtomicInteger原理 4.6.1 原理介绍 AtomicInteger的本质#xff1a;自旋锁 CAS算法 CAS的全成是#xff1a; Compare And Swap(比较再交换); 是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令。CAS可以将read-modify-write转换为原子操作#xff0c;这…AtomicInteger原理 4.6.1 原理介绍 AtomicInteger的本质自旋锁 CAS算法 CAS的全成是 Compare And Swap(比较再交换); 是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令。CAS可以将read-modify-write转换为原子操作这个原子操作 直接由处理器保证。CAS有3个操作数内存值V旧的预期值A要修改的新值B。当且仅当旧预期值A和内存值V相同时将内存值V修改为B并返回true否则什么都不做并返回false。 举例说明 在内存值V当中存储着值为10的变量。 此时线程1想要把变量的值增加1。对线程1来说旧的预期值 A 10 要修改的新值 B 11。 在线程1要提交更新之前另一个线程2抢先一步把内存值V中的变量值率先更新成了11。 线程1开始提交更新首先进行A和内存值V的实际值比较Compare发现A不等于V的值提交失败。 线程1重新获取内存值V作为当前A的值并重新计算想要修改的新值。此时对线程1来说A 11B 12。这个重新尝试的过程被称为自旋。 这一次比较幸运没有其他线程改变V的值。线程1进行Compare发现A和V的值是相等的。 线程1进行SWAP把内存V的值替换为B也就是12。 举例说明这好比春节的时候抢火车票下手快的会抢先买到票而下手慢的可以再次尝试直到买到票。 4.6.2 源码分析 那么接下来我们就来查看一下AtomicInteger类中incrementAndGet方法的源码。 public class AtomicInteger extends Number implements java.io.Serializable {// cas算法的实现类private static final jdk.internal.misc.Unsafe U jdk.internal.misc.Unsafe.getUnsafe();// 表示变量值在内存中的偏移量地址unsafe类就是根据内存偏移量地址获取数据值。private static final long VALUE U.objectFieldOffset(AtomicInteger.class, value);private volatile int value;// 以原子方式将当前值加1这里返回的是自增后的值public final int incrementAndGet() {/* this表示当前AtomicInteger对象 1表示要增加的值 */return U.getAndAddInt(this, VALUE, 1) 1; // 调用Unsafe类中的getAndAddInt方法}}UnSafe类 public final class Unsafe {// Unsafe类中的getAndAddInt方法public final int getAndAddInt(Object o, long offset, int delta) {int v;// do...while就是自旋操作,当CAS成功以后循环结束do {// 获取AtomicInteger类中所封装的int类型的值就相当于旧的预期值Av getIntVolatile(o, offset); // 调用本类的weakCompareAndSetInt方法实现比较在交换 o: AtomicInteger对象, v: 相当于旧的预期值A, v delta新值B} while (!weakCompareAndSetInt(o, offset, v, v delta));return v;}// Unsafe类中的weakCompareAndSetInt方法public final boolean weakCompareAndSetInt(Object o, long offset, int expected, int x) {return compareAndSetInt(o, offset, expected, x);}// 本地方法调用CPU指令实现CASpublic final native boolean compareAndSetInt(Object o, long offset, int expected, int x);}4.7 CAS与Synchronized CAS和Synchronized都可以保证多线程环境下共享数据的安全性。那么他们两者有什么区别 Synchronized是从悲观的角度出发 总是假设最坏的情况每次去拿数据的时候都认为别人会修改所以每次在拿数据的时候都会上锁这样别人想拿这个数据就会阻塞直到它拿到锁共享资源每次只给一个线程使用其它线 程阻塞用完后再把资源转让给其它线程。因此Synchronized我们也将其称之为悲观锁。jdk中的ReentrantLock也是一种悲观锁。 CAS是从乐观的角度出发: 总是假设最好的情况每次去拿数据的时候都认为别人不会修改所以不会上锁但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。CAS这种机制我们也可以将其称之为乐观锁。
http://www.w-s-a.com/news/343077/

相关文章:

  • 贸易公司如何做网站百度做的网站一般在什么后台
  • 东莞网站设计方案广州做服装电商拿货的网站
  • 部队网站建设设计dede个人网站模板
  • 个人网站怎么自己备案重庆怎样网站推广
  • 做电影网站挣钱吗重庆网站建设技术托管
  • 网站建设用户登录网站商业授权含义
  • 接做室内效果图的网站wordpress制作上传图片
  • 维护一个网站一年多少钱网站微信登录怎么做的
  • 中国建设银行网站E路护航官网如何在招聘网站上选个好公司做销售
  • 网站开发质量管理招聘网站建设方案
  • 有没有那个的网站seo编辑的工作内容
  • 平度那里有做网站的昆明建设招聘信息网站
  • 邯郸城乡建设部网站首页唐山市住房城乡建设部网站主页
  • 慕课联盟网站开发实战六安品牌网站建设电话
  • 制作企业网站首页贵州小程序制作开发
  • 什么是网站后台郑州众志seo
  • 做线上交互的网站分销平台
  • 培训机构网站开发江门cms模板建站
  • 网站描述模板建筑模型网站有哪些
  • 域名注册费用张家界seo
  • 淘宝联盟怎么自己做网站山西省住房与城乡建设厅网站
  • 最新网站建设常见问题使用微信推广的各种方法
  • 购物网站建设课程设计报告做木工的网站
  • 扶沟县网站开发网站建设在哪里进行
  • 查看网站服务器信息网站首页地址 网站域名
  • 网站网站制作网站的ui界面设计案例分析
  • 怎么查网站是否备案成都装修公司联系电话
  • 佛山免费发布信息的网站oa办公系统排行榜
  • 南湖区建设街道办事处网站汕头建设银行各支行电话
  • 复古风格网站网站套餐方案