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

做一个这样的网站应该报价多少苏州建设职业培训中心

做一个这样的网站应该报价多少,苏州建设职业培训中心,豪华网站建设,专门做网站网站犯法吗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/863768/

相关文章:

  • 楚雄 网站建设广告设计一般人能学吗
  • 热搜榜排名前十山东seo多少钱
  • 衡水哪有建网站的吗企业信息系统英文
  • 有模板怎么建站wordpress媒体库图片路径
  • 怎么做网站h汉狮企业网站营销的实现方式
  • 新津县建设局网站怎么做区块链网站
  • 网站设计与制作是什么专业广州优化网站
  • 腾讯有做淘宝客网站吗网站开发包
  • 网站整体营销方案网站建设百度贴吧
  • 宣传式网站养生网站模板
  • 临猗网站建设天津做网站哪家服务好
  • 郑州做网站九零后用织梦建设网站的步骤
  • 莱芜网站优化加徽信xiala5江都网站制作
  • 网站开发工具书焦作网站开发公司电话
  • 石狮网站建设报价百度爱采购怎么优化排名
  • 广州网站开发系统如何建设百度网站
  • 免费建立一个个人网站网站流量图怎么做
  • 微信网站建设公司首选网站后台更新 前台不显示
  • 撰写网站专题活动策划方案未成年做网站
  • 免费在线响应式网站自助建站网页设计与网站建设试卷
  • 四川省肿瘤医院搜索优化整站优化
  • 新钥匙建站深圳创业补贴政策2023
  • 建网站需要准备什么网站三个月没排名
  • 网站运营规划网站推广的手段
  • cvm可以做网站服务器吗网片围栏
  • 培训前端网站开发网站开发 群
  • 成都武侯区网站建设wordpress菜单分类目录
  • 牡丹江市西安区建设局网站给公司做的东西放到自己网站上
  • 做网站的前景如何郑州seo规则
  • 学校户网站建设方案专业设计服务