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

做网站公司哪家公司线下推广方式有哪些

做网站公司哪家公司,线下推广方式有哪些,网络游戏的利与弊,适合夜晚使用的十大app文章目录前言一、CopyOnWriteArrayList是什么?二、如何使用三、底层方法实现3.1 add()3.2 remove()3.3 set()3.4 get()前言 一、CopyOnWriteArrayList是什么? CopyOnWriteArrayList是一个线程安全的集合,是List接口的实现类。它是用Reentra…

文章目录

  • 前言
  • 一、CopyOnWriteArrayList是什么?
  • 二、如何使用
  • 三、底层方法实现
    • 3.1 add()
    • 3.2 remove()
    • 3.3 set()
    • 3.4 get()


前言

一、CopyOnWriteArrayList是什么?

CopyOnWriteArrayList是一个线程安全的集合,是List接口的实现类。它是用ReentrantLock来保证线程安全的,其用法和List接口下其他的实现类相差不大。


二、如何使用

public static void main(String[] args) {// List接口下线程安全的集合CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();// 修改操作(加锁)// 1. 添加list.add("a");list.add("b");list.add("c");// 2. 删除list.remove(0);// 3. 修改list.set(1, "d");// 查询操作(不加锁)String s = list.get(1);System.out.println(s);System.out.println(list);}

三、底层方法实现

3.1 add()

源代码如下:

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();}}

实现概述: 加锁后复制原数组并扩容1位,在新数组末尾添加元素,最后替换底层数组引用。体现了"写时复制"的核心思想。

3.2 remove()

源代码如下:

public E remove(int index) {final ReentrantLock lock = this.lock;lock.lock();try {Object[] elements = getArray();int len = elements.length;E oldValue = get(elements, index);int numMoved = len - index - 1;if (numMoved == 0)setArray(Arrays.copyOf(elements, len - 1));else {Object[] newElements = new Object[len - 1];System.arraycopy(elements, 0, newElements, 0, index);System.arraycopy(elements, index + 1, newElements, index,numMoved);setArray(newElements);}return oldValue;} finally {lock.unlock();}}

实现复述:加锁后创建缩容1位的新数组,分两种情况处理:如果是最后一位元素直接截断,否则删除中间元素并分两段复制到新数组中。

3.3 set()

源代码如下:

public E set(int index, E element) {final ReentrantLock lock = this.lock;lock.lock();try {Object[] elements = getArray();E oldValue = get(elements, index);if (oldValue != element) {int len = elements.length;Object[] newElements = Arrays.copyOf(elements, len);newElements[index] = element;setArray(newElements);} else {// Not quite a no-op; ensures volatile write semanticssetArray(elements);}return oldValue;} finally {lock.unlock();}}

实现概述: 加锁后先比较新旧值,如果不同则复制整个数组并修改指定位置的元素,相同时也要调用setArray()确保数组中的内容是最新的。

3.4 get()

源代码如下:

private E get(Object[] a, int index) {return (E) a[index];
}

实现概述: 无锁操作,直接从volatile数组中获取指定位置的元素,保证了读操作的高性能。


http://www.dtcms.com/wzjs/498263.html

相关文章:

  • 怎么做自己的音乐网站南宁关键词优化软件
  • 做家居建材出口网站有哪些如何在网上推广自己的产品
  • 在哪个网站可以查做项目中标的app下载免费安装
  • ps做网站要求成都seo推广员
  • 网页制作网站aso优化渠道
  • 西宁网站建设服务公司推广策略可以分为哪三种
  • 自建外贸网站多少钱互联网论坛
  • wordpress 系统安装教程 pdf福州短视频seo服务
  • 有哪些做笔译的网站seo教程seo优化
  • 如何建网站吗?摘抄一小段新闻
  • 网页设计制作与代码整体素材优化搜索引擎
  • 求个网站2021能用的服务推广软文范例
  • 品牌网站建设解决百度站长
  • wordpress twenty twelve深圳关键词优化怎么样
  • 怎么做网站赚大钱小程序开发公司前十名
  • 相册模版网站图片展示百度入口
  • 哪个做网站比较好游戏推广一个月能拿多少钱
  • 石景山老山网站建设百度推广销售
  • 中山网站建设文化价格抖音广告怎么投放
  • 清理网站数据库近期国内新闻
  • 北京pk10盘制作网站建设自媒体平台有哪些
  • 之梦网站怎么做seo免费网站开发平台
  • 网站页面创意网络推广主要工作内容
  • 网站开发 为什么要用缩略图制作网站教程
  • 济南做外贸的网站公司吗杭州网站关键词排名
  • 郑州网站seo多少钱优化游戏的软件
  • 做网站中心百度提交网站收录入口
  • 独立商城网站建设微信公众号怎么做文章推广
  • 石家庄 网站 科技windows优化大师功能
  • 网站开发设计文档西安百度推广开户