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

CopyOnWriteArrayList源码阅读

1、构造方法

  • 无参构造函数

    //创建一个空数组,赋值给array引用
    public CopyOnWriteArrayList() {setArray(new Object[0]);
    }//仅通过getArray / setArray访问的数组。
    private transient volatile Object[] array;//设置数组
    final void setArray(Object[] a) {array = a;
    }
  • 有参构造函数

    //创建一个包含指定集合的元素的列表,其顺序由集合的*迭代器返回。
    public CopyOnWriteArrayList(Collection<? extends E> c) {//定义空数组Object[] elements;//如果集合元素是copyWriteArraList.class,则直接调用getArray()获取array属性赋值给元素数组if (c.getClass() == CopyOnWriteArrayList.class)elements = ((CopyOnWriteArrayList<?>)c).getArray();else {//如果不是,则转数组。elements = c.toArray();// c.toArray might (incorrectly) not return Object[] (see 6260652)//如果元素内对象不是Object[],拷贝成Object[]if (elements.getClass() != Object[].class)elements = Arrays.copyOf(elements, elements.length, Object[].class);}//array引用指向新数组setArray(elements);
    }//创建一个保存给定数组副本的列表。
    public CopyOnWriteArrayList(E[] toCopyIn) {//数组拷贝成Object[],并将array引用指向新数组setArray(Arrays.copyOf(toCopyIn, toCopyIn.length, Object[].class));
    }

2、插入方法

  • add(E e)

    //将指定的元素追加到此列表的末尾。
    public boolean add(E e) {//添加独占锁final ReentrantLock lock = this.lock;//加锁,每次只允许一个线程进入这个逻辑。lock.lock();try {//获取所有的元素Object[] elements = getArray();//获取元素长度int len = elements.length;//拷贝容量更大的数组,写时赋值Object[] newElements = Arrays.copyOf(elements, len + 1);//赋值newElements[len] = e;//设置新的引用setArray(newElements);return true;} finally {//解锁lock.unlock();}
    }
    

相关文章:

CopyOnWriteArrayList源码阅读

1、构造方法 无参构造函数 //创建一个空数组&#xff0c;赋值给array引用 public CopyOnWriteArrayList() {setArray(new Object[0]); }//仅通过getArray / setArray访问的数组。 private transient volatile Object[] array;//设置数组 final void setArray(Object[] a) {arra…...

Windows操作系统:共享文件夹,防火墙的设置

1.共享文件夹 1.1 共享文件夹的优点 1.2 共享文件夹的优缺点 1.3 实例操作 ​编辑 2.防火墙设置 2.1 8080端口设置 3.思维导图 1.共享文件夹 1.1 共享文件夹的优点 优点 协作和团队合作&#xff1a;共享文件夹使多个用户能够在同一文件夹中协作和编辑文件。这促进了团…...

STM32独立看门狗

时钟频率 40KHZ 看门狗简介 STM32F10xxx 内置两个看门狗&#xff0c;提供了更高的安全性、时间的精确性和使用的灵活性。两个看 门狗设备 ( 独立看门狗和窗口看门狗 ) 可用来检测和解决由软件错误引起的故障&#xff1b;当计数器达到给 定的超时值时&#xff0c;触发一个中…...

财务数据智能化:用AI工具高效制作财务分析PPT报告

Step1: 文章内容提取 WPS AI 直接打开文件&#xff0c;在AI对话框里输入下面指令&#xff1a; 假设你是财务总监&#xff0c;公司考虑与茅台进行业务合作、投资或收购&#xff0c;请整合下面茅台2021年和2022年的财务报告信息。整理有关茅台财务状况和潜在投资回报的信息&…...

vue3中使用three.js记录

记录一下three.js配合vitevue3的使用。 安装three.js 使用npm安装&#xff1a; npm install --save three开始使用 1.定义一个div <template><div ref"threeContainer" class"w-full h-full"></div> </template>可以给这个di…...

MySQL——表的内外连接

目录 一.内连接 二.外连接 1.左外连接 2.右外连接 一.内连接 表的连接分为内连和外连 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;我们前面学习的查询都是内连接&#xff0c;也是在开发过程中使用的最多的连接查询。 语法&#xff1a; s…...

基于IPP-FFT的线性调频Z(Chirp-Z,CZT)的C++类库封装并导出为dll(固定接口支持更新)

上一篇分析了三种不同导出C++类方法的优缺点,同时也讲了如何基于IPP库将FFT函数封装为C++类库,并导出为支持更新的dll库供他人调用。 在此基础上,结合前面的CZT的原理及代码实现,可以很容易将CZT变换也封装为C++类库并导出为dll,关于CZT的原理和实现,如有问题请参考: …...

【C语言】指针

基本概念 在C语言中&#xff0c;指针是一种非常重要的数据类型&#xff0c;它用于存储变量的内存地址。指针提供了对内存中数据的直接访问&#xff0c;使得在C语言中可以进行灵活的内存操作和数据传递。以下是关于C语言指针的一些基本概念&#xff1a; 1. 指针的声明&#xff…...

PostgreSql 索引使用技巧

索引种类详情可参考《PostgreSql 索引》 一、适合创建索引的场景 经常与其他表进行连接的表&#xff0c;在连接字段上应该建索引。经常出现在 WHERE 子句中的字段&#xff0c;特别是大表的字段&#xff0c;应该建索引。经常出现在 ORDER BY 子句中的字段&#xff0c;应该建索…...

【华为数据之道学习笔记】6-7打造业务自助分析的关键能力

华为公司将自助分析作为一种公共能力&#xff0c;在企业层面进行了统一构建。一方面&#xff0c;面向不同的消费用户提供了差异性的能力和工具支撑&#xff1b;另一方面&#xff0c;引入了“租户”概念&#xff0c;不同类型的用户可以在一定范围内分析数据、共享数据结果。 1. …...

K8S从harbor中拉取镜像的规则imagePullPolicy

1、参数 配制参数为&#xff1a;imagePullPolicy&#xff1a; 可以选择的值有&#xff1a;Always&#xff0c;IfNotPresent&#xff0c;Never 2、参数结果 如果pod的镜像拉取策略为imagePullPolicy: Always&#xff1a;当harbor不能运行后&#xff0c;pod会一直从harbor上拉…...

LeetCode刷题--- 优美的排列

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​​​http://t.cs…...

关于edge浏览器以及插件推荐【亲测好用】

一.edge浏览器介绍 Edge 浏览器是由微软公司开发的一款新一代网络浏览器。它最初于2015年发布&#xff0c;是微软Windows 10 操作系统的默认浏览器&#xff0c;后来还推出了适用于 Android 和 iOS 等移动设备的版本。Edge 浏览器采用了全新的浏览器内核&#xff0c;称为 Micros…...

关于“Python”的核心知识点整理大全43

目录 ​编辑 15.2.3 使2散点图并设置其样式 scatter_squares.py 15.2.4 使用 scatter()绘制一系列点 scatter_squares.py 15.2.5 自动计算数据 scatter_squares.py 15.2.6 删除数据点的轮廓 15.2.7 自定义颜色 15.2.8 使用颜色映射 scatter_squares.py 注意 15.2.9…...

Android Framework一些问题思考

一&#xff0c;zygote通信为什么用socket&#xff0c;而不是binder? 1&#xff0c;binder通信依赖用户空间进程Servicemanager&#xff0c;socket通信不依赖用户空间进程。zygote与servicemanager, surfaceflinger等都是通过各自init.rc文件被init进程解析加载&#xff0c;时…...

2024年安全员-C证证考试题库及安全员-C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年安全员-C证证考试题库及安全员-C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的…...

推广主要指标及定义

推广主要指标以直通车为例解释&#xff0c;如图所示 1.展示量&#xff1a;当消费者搜索某个词&#xff0c;推广计划在天猫直通车展示位上被买家看到的次数&#xff08;去掉被消费者快进划过、主图未完金展现等情况产生的曝光)&#xff1b; 2.点击量&#xff1a;消费者看到广告…...

【Proteus仿真】【Arduino单片机】水质监测报警系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用按键、LED、蜂鸣器、LCD1602、ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。 主要功能&#xff1a; 系统运行后&#xf…...

随机问卷调查数据的处理(uniapp)

需求&#xff1a;问卷调查 1.返回的数据中包含单选、多选、多项文本框、单文本框、图片上传 2.需要对必填的选项进行校验 3.非必填的多项文本框内容 如果不填写 不提交 表单数据格式 res{"code": 0,"msg": null,"data": [{"executeDay&…...

开源分布式搜索引擎ElasticSearch结合内网穿透远程连接

文章目录 前言1. Windows 安装 Cpolar2. 创建Elasticsearch公网连接地址3. 远程连接Elasticsearch4. 设置固定二级子域名 前言 简单几步,结合Cpolar 内网穿透工具实现Java 远程连接操作本地分布式搜索和数据分析引擎Elasticsearch。 Cpolar内网穿透提供了更高的安全性和隐私保…...

Web地图开发避坑指南:墨卡托和UTM坐标系到底怎么选?

Web地图开发坐标系选择指南&#xff1a;墨卡托与UTM的深度对比 当我们打开手机地图应用查看附近餐厅时&#xff0c;很少有人会思考背后复杂的坐标系转换过程。作为一名长期从事WebGIS开发的工程师&#xff0c;我见过太多项目因为坐标系选择不当而导致定位偏移、性能下降甚至数据…...

python-flask-djangol框架的考公考编学习课程资料推荐系统

目录技术选型与架构设计数据采集与处理推荐算法实现用户画像构建前端交互与功能部署与优化合规与扩展项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术选型与架构设计 采用Python Flask作为后端框架&#xff0c;搭配SQLAlch…...

四自由度车辆与简支梁桥车桥耦合振动的Matlab实现

车桥耦合振动程序 matlab编程 四自由度车辆与简支梁桥车桥耦合 可提取车体垂直及转动加速度响应以及车轮响应 在交通工程领域&#xff0c;车桥耦合振动的研究对于保障桥梁结构安全以及行车舒适性至关重要。今天咱们就来讲讲如何用Matlab实现四自由度车辆与简支梁桥的车桥耦合振…...

AI短剧的风口来了!无需编程,全程技术支持,助你快速贴牌部署私有化系统

&#x1f525; AI短剧爆火&#xff0c;但你还在因为“没有技术团队”而错失风口&#xff1f; 2024-2025年&#xff0c;AI短剧无疑是内容创业最大的黑马。从AI换脸、AI配音到一键生成剧本&#xff0c;市场的需求呈指数级爆发。 然而&#xff0c;对于大多数手握流量渠道、有客户…...

PLC新手必看:三菱FX2N顺序功能图的5个常见错误及解决方法

三菱FX2N顺序功能图实战避坑指南&#xff1a;从原理到调试的完整解决方案 第一次接触三菱FX2N的顺序功能图编程时&#xff0c;那种既兴奋又忐忑的心情至今记忆犹新。看着逻辑清晰的流程图在仿真中运行失常&#xff0c;或是设备突然"抽风"时的茫然&#xff0c;是每个P…...

C++的std--ranges中的优化异构

C的std::ranges中的优化异构&#xff1a;现代编程的效率革命 C20引入的std::ranges库彻底改变了算法和容器的交互方式&#xff0c;其中优化异构&#xff08;Heterogeneous Optimization&#xff09;技术尤为引人注目。传统算法在处理不同类型的数据时&#xff0c;往往需要显式…...

Realistic Vision V5.1镜像部署实操:解决‘模型路径不存在’异常的完整排查链

Realistic Vision V5.1镜像部署实操&#xff1a;解决‘模型路径不存在’异常的完整排查链 1. 引言&#xff1a;从“模型路径不存在”说起 如果你在部署Realistic Vision V5.1虚拟摄影棚时&#xff0c;满怀期待地启动程序&#xff0c;结果却在控制台看到一行冰冷的“模型路径不…...

告别SQLite!用ObjectBox为Flutter应用打造高性能本地存储(含常见报错解决方案)

告别SQLite&#xff01;用ObjectBox为Flutter应用打造高性能本地存储&#xff08;含常见报错解决方案&#xff09; 在移动应用开发中&#xff0c;本地数据存储方案的选择直接影响着用户体验和应用性能。对于Flutter开发者来说&#xff0c;SQLite长期以来都是默认选择&#xff0…...

Qwen3.5-4B-Claude-Opus垂直场景:工业IoT设备告警根因的多条件推演

Qwen3.5-4B-Claude-Opus垂直场景&#xff1a;工业IoT设备告警根因的多条件推演 1. 工业IoT告警分析的挑战与机遇 在现代工业物联网环境中&#xff0c;设备告警分析面临着前所未有的复杂性。一个典型的制造工厂可能同时运行着数千台联网设备&#xff0c;每天产生数以万计的告警…...

Mac上PPT讲稿一键变文稿:用AppleScript自动化导出备注到TXT(附完整代码)

Mac上PPT讲稿一键变文稿&#xff1a;用AppleScript自动化导出备注到TXT&#xff08;附完整代码&#xff09; 每次做完PPT&#xff0c;看着密密麻麻的备注栏&#xff0c;你是不是也头疼怎么把这些零散的讲稿整理成连贯的文档&#xff1f;作为一位经常需要准备培训材料的讲师&…...