一、属性

1.1 unsafe&valueoffset

// setup to use Unsafe.compareAndSwapInt for updatesprivate static final Unsafe unsafe = Unsafe.getUnsafe();private static final long valueOffset;

第一个变量是Unsafe,Unsafe是JDK内部的工具类,主要实现了平台相关的操作。下面内容引自JDK官方文档:

sun.misc.Unsafe是JDK内部用的工具类。它通过暴露一些Java意义上说“不安全”的功能给Java层代码,来让JDK能够更多的使用Java代码来实现一些原本是平台相关的、需要使用native语言(例如C或C++)才可以实现的功能。该类不应该在JDK核心类库之外使用。
Unsafe的具体实现跟本篇的目标关联不大,你只要知道这段代码是为了获取value在堆内存中的偏移量就够了。
第二个变量是valueOffset,也就是内存偏移量。偏移量在AtomicInteger中很重要,AtomicInteger的原子操作都靠内存偏移量来实现的

1.2 value

private volatile int value;

二、方法

Java AtomicInteger类源码解析相关推荐

  1. Java String类源码解析

    String直接继承Object 含有一个char[] value,还有一个int hash默认值为0 new String()的构造产生的是一个值为""的字符数组 String( ...

  2. Java Optional类源码解析和用法

    个人网站:http://xiaocaoshare.com/ 要求:jdk1.8以上 Optional类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get( ...

  3. Java LinkedHashMap类源码解析

    摘要: LinkedHashMap继承了HashMap,他在HashMap的基础上增加了一个双向链表的结构,链表默认维持key插入的顺序,重复的key值插入不会改变顺序,适用于使用者需要返回一个顺序相 ...

  4. java.lang 源码剖析_java.lang.Void类源码解析

    在一次源码查看ThreadGroup的时候,看到一段代码,为以下: /* * @throws NullPointerException if the parent argument is {@code ...

  5. Java String类源码阅读笔记

    文章目录 一.前置 二.String类源码解析 1.String类继承关系 2.成员变量 3.构造方法 4.长度/判空 5.取字符 6.比较 7.包含 8.hashCode 9.查询索引 10.获取子 ...

  6. Java集合---LinkedList源码解析

    一.源码解析 1. LinkedList类定义 2.LinkedList数据结构原理 3.私有属性 4.构造方法 5.元素添加add()及原理 6.删除数据remove() 7.数据获取get() 8 ...

  7. Java线程池源码解析及高质量代码案例

    引言 本文为Java高级编程中的一些知识总结,其中第一章对Jdk 1.7.0_25中的多线程架构中的线程池ThreadPoolExecutor源码进行架构原理介绍以及源码解析.第二章则分析了几个违反J ...

  8. Java集合-ArrayList源码解析-JDK1.8

    ◆ ArrayList简介 ◆ ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAcc ...

  9. Node 学习六、核心模块 events之 01 events 和 EventEmitter 类、发布订阅、EventEmitter 类源码解析和模拟实现

    events 事件模块 events 与 EventEmitter node.js 是基于事件驱动的异步操作架构,内置 events 模块 events 模块提供了 EventEmitter 类 这个 ...

  10. Scroller类源码解析及其应用(一)

    滑动是我们在自定义控件时候经常遇见的难题,让新手们倍感困惑,这篇文章主要介绍Scroller类的源码,告诉打击这个到底有什么用,怎么使用它来控制滑动.另外,我还会结合一个简单的例子,来看一下这个类的应 ...

最新文章

  1. layer弹窗在IOS上,被软键盘挤到上边的解决方法
  2. 望城区构建摩托车电动车防盗系统 打造物联网平安智慧城市
  3. FIFOQueue '_4_batch_processing/batch_join/fifo_queue' is closed and has insu
  4. Python爬虫QQ说说并分析朋友状况
  5. 在word中使用notepad++实现代码的语法高亮
  6. C++ vector容器类型
  7. 异步通信在生活中的例子_AJAX简单异步通信实例分析
  8. java缓存_使用Redis和Java进行数据库缓存
  9. matlab工具箱下载
  10. PTES 测试执行标准
  11. 服务器pci-e硬盘,来一发干货,PCI-E SSD硬盘使用须知
  12. 测开面试题大全及答案(含测试基础|实例介绍|软件本地化测试等)
  13. 骑士CMS01 74cms v4.2.111 后台getshell漏洞复现
  14. 外接西数固态硬盘linux,外接固态硬盘安装教程 关于外接固态硬盘安装教
  15. 顾客终生价值-CLV
  16. Oliver的救援(广搜练习题)
  17. c语言程序设计第三版乌云高娃答案,C语言程序设计教学课件作者第3版乌云高娃补充习题及答案C语言程序设计教学课件作者第3版乌云高娃补充习题及答案第3章补充习题及答案课件.doc...
  18. 第三方支付机构和非银行支付机构的区别?第三方支付客户备付金介绍
  19. python基于pingouin包进行统计分析:使用tost函数执行独立双样本双单侧检验(TOST)、以dataframe的形式输出分析结果(包含p值、自由度、bound等)
  20. Docker 安装 Rocket MQ

热门文章

  1. php 抽象类 接口 区别,php中接口、抽象类以及接口和抽象类区别详解
  2. 通过SpringAop、Filter对Request参数解密和对Response内容加密
  3. go语言学习之切片、字典、defer语句
  4. Flutter之SemanticsBinding和WidgetsBindingObserver简析
  5. java类加载器ClassLoader浅析
  6. 解决问题 1474 个,Flink 1.11 究竟有哪些易用性上的改善?
  7. Android内存泄漏分析心得
  8. 认真与随便,结果有天壤之别
  9. mysql 分页 数据重复数据_MySQL 分页数据错乱重复
  10. matlab pca重构,如何反转PCA并从几个主要组成部分重建原始变量?