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

西安公司建设网站含山县建设局网站下载

西安公司建设网站,含山县建设局网站下载,响应式网站和,携程网网站是哪家公司做的AtomicInteger#xff0c;一个提供原子操作的Integer的类。在Java语言中#xff0c;i和i操作并不是线程安全的#xff0c;在使用的时候#xff0c;不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。来看AtomicInteger提供的接口。//…AtomicInteger一个提供原子操作的Integer的类。在Java语言中i和i操作并不是线程安全的在使用的时候不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。来看AtomicInteger提供的接口。//获取当前的值public final int get()//取当前的值并设置新的值public final int getAndSet(int newValue)//获取当前的值并自增public final int getAndIncrement()//获取当前的值并自减public final int getAndDecrement()//获取当前的值并加上预期的值public final int getAndAdd(int delta)... ...为什么说atomicInteger是线程安全的呢在AtomicInteger的源码中相关的代码如下Java代码  // setup to use Unsafe.compareAndSwapInt for updatesprivate static final Unsafe unsafe  Unsafe.getUnsafe();上面这行代码是获取Unsafe实例的。一般情况下我们是拿不到该类的实例的当然jdk库里面是可以随意使用的。Java代码  static {try {valueOffset  unsafe.objectFieldOffset(AtomicInteger.class.getDeclaredField(value));} catch (Exception ex) { throw new Error(ex); }}上面这几行代码是用来获取AtomicInteger实例中的value属性在内存中的位置。这里使用了Unsafe的objectFieldOffset方法。这个方法是一个本地方法 该方法用来获取一个给定的静态属性的位置。Java代码  public native long objectFieldOffset(Field f);这里有个疑问为什么需要获取属性在内存中的位置通过查看AtomicInteger源码发现在这样几个地方使用到了这个valueOffset值Java代码  public final void lazySet(int newValue) {unsafe.putOrderedInt(this, valueOffset, newValue);}Java代码  public final boolean compareAndSet(int expect, int update) {return unsafe.compareAndSwapInt(this, valueOffset, expect, update);}Java代码  public final boolean weakCompareAndSet(int expect, int update) {return unsafe.compareAndSwapInt(this, valueOffset, expect, update);}查找资料后发现lazySet方法大多用在并发的数据结构中用于低级别的优化。compareAndSet这个方法多见于并发控制中简称CAS(Compare And Swap)意思是如果valueOffset位置包含的值与expect值相同则更新valueOffset位置的值为update并返回true否则不更新返回false。这里可以举个例子来说明compareAndSet的作用如支持并发的计数器在进行计数的时候首先读取当前的值假设值为a对当前值 1得到b但是1操作完以后并不能直接修改原值为b因为在进行1操作的过程中可能会有其它线程已经对原值进行了修改所以在更新之前需要判断原值是不是等于a如果不等于a说明有其它线程修改了需要重新读取原值进行操作如果等于a说明在1的操作过程中没有其它线程来修改值我们就可以放心的更新原值了。
http://www.zqtcl.cn/news/278025/

相关文章:

  • 关于建设门户网站的通知重庆刮刮卡制作
  • 网站建设和维护工作内容凡科网免费建站步骤及视频
  • 如何用c 做网站最新疫苗接种最新消息
  • 营销型网站建设报价wordpress 注册 登录界面
  • 网站编辑器哪个好黄骅网站建设价格
  • 爱站工具包官网下载国外cdn
  • 郑州便宜网站建设做网站横幅的图片多大
  • 网站建设的未来wordpress防黑客插件
  • 个人备案网站可以做支付吗做娱乐新闻的网站有哪些
  • 国家建设部网站网站导航如何做半透明
  • 长治网站设计制作网站网站是用什么软件做的
  • wordpress成长记录网站模版市场推广方案ppt
  • 外贸网站建设560wordpress 在线音乐播放器
  • 大连哪里有手机自适应网站建设维护交互式网站开发技术asp
  • 潍坊做网站多少钱个人业务网站带后台
  • 网站建设灬金手指科杰全部游戏免费(试玩)
  • 石家庄网站设计宜昌市住房和城乡建设局网站
  • 商城型企业网站的功能中山市中国建设银行网站
  • 公司做网站那个网站好网站推广seo方法
  • 赣州制作网站百度贵州icp网站备案中心
  • 阿里云域名如何做网站如何查询网站快照
  • 温州市城乡建设厅网站首页有没有做网站的多少钱
  • 网站建设实训报告建议缘震网络网站建设之f套餐
  • 网上免费注册qq网站wordpress怎么发布网站
  • 网站没有根目录国内互联网建站公司排名
  • 做网站需要架构师吗鞍山贴吧最新消息
  • 大连网站关键词推广网站建设合同报价
  • 网站维护费用一年多少广州h5网站建设
  • 如何搭建静态网站源码手机开发软件app的工具
  • 之前做的网站推广怎么删除专业做网站官网