Java AtomicInteger类源码解析
一、属性
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类源码解析相关推荐
- Java String类源码解析
String直接继承Object 含有一个char[] value,还有一个int hash默认值为0 new String()的构造产生的是一个值为""的字符数组 String( ...
- Java Optional类源码解析和用法
个人网站:http://xiaocaoshare.com/ 要求:jdk1.8以上 Optional类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get( ...
- Java LinkedHashMap类源码解析
摘要: LinkedHashMap继承了HashMap,他在HashMap的基础上增加了一个双向链表的结构,链表默认维持key插入的顺序,重复的key值插入不会改变顺序,适用于使用者需要返回一个顺序相 ...
- java.lang 源码剖析_java.lang.Void类源码解析
在一次源码查看ThreadGroup的时候,看到一段代码,为以下: /* * @throws NullPointerException if the parent argument is {@code ...
- Java String类源码阅读笔记
文章目录 一.前置 二.String类源码解析 1.String类继承关系 2.成员变量 3.构造方法 4.长度/判空 5.取字符 6.比较 7.包含 8.hashCode 9.查询索引 10.获取子 ...
- Java集合---LinkedList源码解析
一.源码解析 1. LinkedList类定义 2.LinkedList数据结构原理 3.私有属性 4.构造方法 5.元素添加add()及原理 6.删除数据remove() 7.数据获取get() 8 ...
- Java线程池源码解析及高质量代码案例
引言 本文为Java高级编程中的一些知识总结,其中第一章对Jdk 1.7.0_25中的多线程架构中的线程池ThreadPoolExecutor源码进行架构原理介绍以及源码解析.第二章则分析了几个违反J ...
- Java集合-ArrayList源码解析-JDK1.8
◆ ArrayList简介 ◆ ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAcc ...
- Node 学习六、核心模块 events之 01 events 和 EventEmitter 类、发布订阅、EventEmitter 类源码解析和模拟实现
events 事件模块 events 与 EventEmitter node.js 是基于事件驱动的异步操作架构,内置 events 模块 events 模块提供了 EventEmitter 类 这个 ...
- Scroller类源码解析及其应用(一)
滑动是我们在自定义控件时候经常遇见的难题,让新手们倍感困惑,这篇文章主要介绍Scroller类的源码,告诉打击这个到底有什么用,怎么使用它来控制滑动.另外,我还会结合一个简单的例子,来看一下这个类的应 ...
最新文章
- layer弹窗在IOS上,被软键盘挤到上边的解决方法
- 望城区构建摩托车电动车防盗系统 打造物联网平安智慧城市
- FIFOQueue '_4_batch_processing/batch_join/fifo_queue' is closed and has insu
- Python爬虫QQ说说并分析朋友状况
- 在word中使用notepad++实现代码的语法高亮
- C++ vector容器类型
- 异步通信在生活中的例子_AJAX简单异步通信实例分析
- java缓存_使用Redis和Java进行数据库缓存
- matlab工具箱下载
- PTES 测试执行标准
- 服务器pci-e硬盘,来一发干货,PCI-E SSD硬盘使用须知
- 测开面试题大全及答案(含测试基础|实例介绍|软件本地化测试等)
- 骑士CMS01 74cms v4.2.111 后台getshell漏洞复现
- 外接西数固态硬盘linux,外接固态硬盘安装教程 关于外接固态硬盘安装教
- 顾客终生价值-CLV
- Oliver的救援(广搜练习题)
- c语言程序设计第三版乌云高娃答案,C语言程序设计教学课件作者第3版乌云高娃补充习题及答案C语言程序设计教学课件作者第3版乌云高娃补充习题及答案第3章补充习题及答案课件.doc...
- 第三方支付机构和非银行支付机构的区别?第三方支付客户备付金介绍
- python基于pingouin包进行统计分析:使用tost函数执行独立双样本双单侧检验(TOST)、以dataframe的形式输出分析结果(包含p值、自由度、bound等)
- Docker 安装 Rocket MQ
热门文章
- php 抽象类 接口 区别,php中接口、抽象类以及接口和抽象类区别详解
- 通过SpringAop、Filter对Request参数解密和对Response内容加密
- go语言学习之切片、字典、defer语句
- Flutter之SemanticsBinding和WidgetsBindingObserver简析
- java类加载器ClassLoader浅析
- 解决问题 1474 个,Flink 1.11 究竟有哪些易用性上的改善?
- Android内存泄漏分析心得
- 认真与随便,结果有天壤之别
- mysql 分页 数据重复数据_MySQL 分页数据错乱重复
- matlab pca重构,如何反转PCA并从几个主要组成部分重建原始变量?