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

获取网站js深圳定制钻戒哪里好推荐

获取网站js,深圳定制钻戒哪里好推荐,网站 域名解析出错,企业网站推广的方法有1. CAS概述 CAS(Compare ans swap/set) 比较并交换#xff0c;实现并发的一种底层技术。它将预期的值和内存中的值比较#xff0c;如果相同#xff0c;就更新内存中的值。如果不匹配#xff0c;一直重试#xff08;自旋#xff09;。Java.util.concurrent.atomic包下的原…1. CAS概述 CAS(Compare ans swap/set) 比较并交换实现并发的一种底层技术。它将预期的值和内存中的值比较如果相同就更新内存中的值。如果不匹配一直重试自旋。Java.util.concurrent.atomic包下的原子类都使用了CAS算法 2. CAS原理 CAS具体的操作是将预期的值和内存中真实的值进行比较如果相同就更新值。如果不相同就重试自旋。 CAS是通过Unsafe的compareAndSwap方法实现的底层实现是CPU原子指令cmpxchg不会造成数据不一致的问题。 CAS依靠底层硬件实现的无锁原子算法。比synchronized重量级锁性能更好。 3. CAS与自旋锁 3.1 前置知识原子引用类AtomicReference 将自定义的类型变成原子类能够进行cas操作。 public static void main(String[] args){AtomicReferenceUser atomicReference new AtomicReference();User z3 new User(z3,22);User li4 new User(li4,28);atomicReference.set(z3);System.out.println(atomicReference.compareAndSet(z3, li4)\tatomicReference.get().toString());System.out.println(atomicReference.compareAndSet(z3, li4)\tatomicReference.get().toString());}3.2 CAS实现一个自旋锁A线程持有锁B线程自旋等待直到A释放锁。 /*** 题目实现一个自旋锁,复习CAS思想* 自旋锁好处循环比较获取没有类似wait的阻塞。** 通过CAS操作完成自旋锁A线程先进来调用myLock方法自己持有锁5秒钟B随后进来后发现* 当前有线程持有锁所以只能通过自旋等待直到A释放锁后B随后抢到。*/ public class SpinLockDemo {AtomicReferenceThread atomicReference new AtomicReference();public void lock(){Thread thread Thread.currentThread();System.out.println(Thread.currentThread().getName()\t----come in 等待锁);while (!atomicReference.compareAndSet(null, thread)) {}System.out.println(Thread.currentThread().getName() \t 拿到锁);}public void unLock(){Thread thread Thread.currentThread();atomicReference.compareAndSet(thread,null);System.out.println(Thread.currentThread().getName()\t----task over,释放锁...);}public static void main(String[] args){SpinLockDemo spinLockDemo new SpinLockDemo();new Thread(() - {spinLockDemo.lock();//暂停几秒钟线程try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); }spinLockDemo.unLock();},A).start();//暂停500毫秒,线程A先于B启动try { TimeUnit.MILLISECONDS.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); }new Thread(() - {spinLockDemo.lock();spinLockDemo.unLock();},B).start();} }核心思想 加锁开始的时候内存中的值为NULL一旦有线程进入预期值为NULL,和真实值匹配将内存设置为当前线程值。(此时其他线程进来后预期值NULL但是真实值已经被修改所以会自旋这为加锁)解锁 释放锁之后重新设置内存的值为NULL让其他线程能够进入从而修改 运行结果 CAS和synchronized比较 CAS线程不会阻塞线程一直自旋。 Synchronized会阻塞会进行线程的上下文切换非常耗费资源。 CAS缺点 循环时间长开销大 CAS如果预测值和真实值不一样将一直自旋。导致循环CPU开销大。 ABA问题 ABA问题顾名思义就是将线程1在进行CAS操作的时候另一个线程2已经将A修改为B又快速修改回A导致一个线程并未发现中间修改过仍能正常进行CAS比较和修改。 ABA问题解决方案 原子时间戳引用给每次修改都加上一个时间戳(版本号)CAS操作的时候不仅要比较预测值和真实值还要比较预测版本号和真实版本号。 new AtomicStampedReference().compareAndSet(V expectedReference,V newReference,int expectedStamp,int newStamp)CAS注意事项 CAS只能保证原子性不能保证变量的可见性。要配合volatile使用保证共享变量的可见性。 CAS适用于并发量不高多核CPU的情况。并发量增高CAS自旋会导致消耗CPU资源。这时候用LongAdder
http://www.pierceye.com/news/785500/

相关文章:

  • 免费网站的建设绵阳网站建设制作
  • 学生处网站建设招标公告网站包括哪些主要内容
  • 成都门户网站建设多少钱聚合广告联盟
  • 坦克大战网站开发课程设计报告软文营销的本质
  • 美食网站开发网站登录验证码是怎么做的
  • 电子商务网站排名辽宁省建设工程信息网业绩公示
  • 天津建设科技杂志的官方网站wordpress cnzz插件
  • 滨州建设网站太原网站建设优化
  • 记事本做网站怎么改字体包装设计模板设计素材
  • 下载软件的网站推荐thinkphp和wordpress
  • 青海省城乡和住房建设厅网站合肥小吃培训网页设计
  • 财经门户网站建设django校园网站开发
  • 泉州网站建设报价广东建设厅网站
  • 建设网站的源代码的所有权wordpress网站打开慢
  • 印度外贸网站有哪些家居小程序源码下载
  • 上海网站建设中心pc官方网站
  • 深圳企业网站制作公司查询西安网站设计哪家好
  • 大埔做网站手机qq邮箱发布了wordpress
  • 寻找南昌网站设计单位网站建设 中企动力医院
  • 中间商可以做网站吗平面广告设计师的工作内容
  • 网站建设用户分析做网站有什么软件
  • 洛阳网站建设启辰网络wordpress怎么破解查看
  • 长沙市网站设计公司厦门建设网站建站
  • 网站做链轮会被惩罚吗网站开发系统
  • 一般做企业网站需要什么资料WordPress情侣博客模板
  • 网站开发教程公司哪些官网用wordpress
  • redis网站开发教程创建app软件
  • 企业网站新闻wp怎么做合肥环保公司网站建设
  • 怎么仿一个复杂的网站wordpress描述怎么改
  • php 如何用op浏览器开发手机网站app开发制作哪种快