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

网站视频超链接怎么做/网络广告

网站视频超链接怎么做,网络广告,广州十大网站开发公司,网站建设课程设计报告2019独角兽企业重金招聘Python工程师标准>>> 1.1前言 AtomicInteger是一个支持原子操作的Integer类,它提供了原子自增方法、原子自减方法以及原子赋值方法等。其底层是通过volatile和CAS实现的,其中volatile保证了内存可见性,CAS算…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.1前言

        AtomicInteger是一个支持原子操作的Integer类,它提供了原子自增方法、原子自减方法以及原子赋值方法等。其底层是通过volatile和CAS实现的,其中volatile保证了内存可见性,CAS算法保证了原子性。因此接下来我们先了解下volatile和CAS,然后在研究下AtomicInteger的源码。

1.2volatile变量

        volatile是一种稍弱的同步机制,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总返回最新写入的值。在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比sychronized关键字更轻量级的同步机制。

1.3CAS

        CAS(Compare And Swap)即比较并交换,CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。它包含三个参数:V内存值,预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。原理图如下所示

1.4AtomicInteger源码剖析

private static final Unsafe unsafe = Unsafe.getUnsafe();//调用指针类Unsafe
private static final long valueOffset;//变量value的内存偏移量static {try {valueOffset = unsafe.objectFieldOffset(AtomicInteger.class.getDeclaredField("value"));} catch (Exception ex) { throw new Error(ex); }
}private volatile int value;//volatile修饰的int变量value

 

public AtomicInteger(int initialValue) {//带参数的构造函数value = initialValue;
}public AtomicInteger() {//不带参数的构造函数
}

        

public final int get() {//获取当前最新值return value;
}public final void set(int newValue) {//设置当前值value = newValue;
}
public final void lazySet(int newValue) {//最终把值设置为newValue,使用该方法后,其他线程在一段时间内还会获取到旧值unsafe.putOrderedInt(this, valueOffset, newValue);
}public final int getAndSet(int newValue) {//设置新值并返回旧值return unsafe.getAndSetInt(this, valueOffset, newValue);
}
public final boolean compareAndSet(int expect, int update) {//如果当前值为expect,则设置为updatereturn unsafe.compareAndSwapInt(this, valueOffset, expect, update);
}
public final int getAndIncrement() {//当前值加1返回旧值return unsafe.getAndAddInt(this, valueOffset, 1);
}public final int getAndDecrement() {//当前值减1返回旧值return unsafe.getAndAddInt(this, valueOffset, -1);
}public final int getAndAdd(int delta) {//当前值增加delta,返回旧值return unsafe.getAndAddInt(this, valueOffset, delta);
}public final int incrementAndGet() {//当前值增加1返回新值return unsafe.getAndAddInt(this, valueOffset, 1) + 1;
}public final int decrementAndGet() {//当前值减1,返回新值return unsafe.getAndAddInt(this, valueOffset, -1) - 1;
}

1.5总结

        使用AtomicInteger替换普通int类型执行自增的原子操作,能够保证了线程安全。

转载于:https://my.oschina.net/wuchanghao/blog/1829145

http://www.lbrq.cn/news/792541.html

相关文章:

  • 动漫做暧视频网站/如何制作自己的公司网站
  • 装修公司网站源码/关键词优化的主要工具
  • 利用帝国软件如何做网站/手机网页制作app
  • 为什么推荐企业做网站/百度seo软件首选帝搜软件
  • 邢台手机网站建设地方/宁波seo网络推广选哪家
  • 百度怎么做网站排名/自己做网站流程
  • 国内flex做的网站/央视新闻
  • 企业做网站认证有哪些好处/seo网络推广优化教程
  • 网站建设套餐价格/搜索大全引擎入口
  • 龙湖什么网站做宣传/seo关键词是怎么优化的
  • 罗村网站制作公司/国际新闻头条今日国际大事
  • 做优化网站多少钱/网站开通
  • 导购网站开发/seo网站关键词优化价格
  • 青岛网站建设市场/网络优化工程师招聘信息
  • 租服务器网站/seo视频教程汇总
  • 180天做180个网站/网络营销与策划
  • 商标查询网站建设/2022近期时事热点素材
  • 河北网络公司网站建设/seo网站优化收藏
  • 西安现在可以自由出入吗/秦皇岛seo招聘
  • 做视频的背景音乐哪里下载网站/百度收录检测
  • 盘锦做网站选哪家好/我的百度账号
  • 海外培训视频网站建设/seo求职信息
  • asp网站栏目修改/营销推广计划
  • 网站设计超链接怎么做/无安全警告的浏览器
  • 微信如何做网站/设计网站官网
  • 简述网站开发具体流程图/银川seo优化
  • 无锡定制化网站建设/百度搜索推广怎么做
  • wordpress 当前列表数/南昌seo技术外包
  • 360建筑网兼职/惠州百度seo在哪
  • 如何在yahoo上做网站/广告投放平台排名
  • Android的UI View是如何最终绘制成一帧显示在手机屏幕上?
  • 理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
  • 「iOS」————SideTable
  • 网络安全基础知识【6】
  • 社群团购市场选择与开源技术赋能下的下沉市场开拓策略研究——以开源AI智能名片、链动2+1模式与S2B2C商城小程序为例
  • windows系统安装文生图大模型Stable diffusion V3.5 large(完整详细可用教程)