List的同步类比较

Java27

TL;NRs

  • CopyOnWriteArrayList类在多线程顺序读取上有很大的优势,但在随机读取上反而有较大的劣势,且在写入方面性能极差。
  • Vector类在顺序读取方面性能较差,但在随机读取方面有较大的优势,写入方面性能也还可以。

1,引言

java线程安全的List实现有以下三种:

  1. new Vector<>()
  2. Collections.synchronizedList(new ArrayList<>())
  3. new CopyOnWriteArrayList<>()

通常认为使用了 synchronized会导致运行变慢,那么在 java针对 synchronized进行一系列优化后,现在的情况如何呢?为了检验这一说法,写了一个验证程序进行验证。

2,验证代码

ArrayList作为基础,分别测试4种 List的顺序写入( 0 ~ 1 << 24)、顺序读取和随机读取,各十轮。据此编写代码。代码太长了,所以放到最后

3,测试平台

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java基础学习总结 Java

Java基础学习总结

写的这个博客是学习B站狂神说的Java教学视频的学习记录,记录了重点知识以及以前易混淆理解的知识点。本博客可能缺少部分基础知识点,适合像我一样学习Java过程中曾经半途而废的学生。 Java的注释分为...
idea-启动速度优化 Java

idea-启动速度优化

原因:默认分配的内存太小了 解决方式:更改idea(64).exe.vmoptions配置 D:\ADBSpace\ProgramFiles\ideaIU-2021.2.win\bin 默认配置 ``...
多系统对接的适配与包装模式应用 Java

多系统对接的适配与包装模式应用

日常开发系统中通常需要对接多个系统,需要用到适配器模式。 例如:支付方式就涉及多个系统对接。 国际惯例,先引入概念。 适配器模式: 提到适配器自然就能想到手机用的电源适配器。 他的作用就是将220V交...
数据类型(Java) Java

数据类型(Java)

数据类型分类 1.基本数据类型 数值类型: 整数类型: byte【(1个字节),范围:-128-127】 short【(2个字节),范围:-32768-32767】 int【(4个字节),范围:-21...
操作线程的方法 Java

操作线程的方法

操作线程的方法操作线程有很多方法,这些方法可以使线程从某一种状态过渡到另一种状态。 线程的休眠能控制线程行为的方法之一是调用sleep()方法,sleep()方法可以指定线程休眠的时间,线程休眠的时间...
谈谈设计对软件工程目标实现的影响 Java

谈谈设计对软件工程目标实现的影响

本文从个人经验出发,谈谈设计对软件工程目标实现的影响。 一、软件工程概念 首先明确下"软件工程的概念"。 看下原文(注意,原文也有一些问题,但总体没有大毛病): 既然有分歧,我只能选择自己认可的部分,...
垃圾收集器与内存分配策略 Java

垃圾收集器与内存分配策略

程序计数器、虚拟机堆栈和本地方法堆栈在创建和执行线程后创建和销毁。堆栈中的堆栈帧通过放大的入口和出口被推入和退出堆栈。在确定类结构时,分配给每个堆栈帧的内存量基本上是已知的,因此这些区域中的内存分配和...
Java并发编程艺术系列-四、 Java并发编程基础 Java

Java并发编程艺术系列-四、 Java并发编程基础

四、 Java并发编程基础 本章将着重介绍Java并发编程的基础知识,从启动一个线程到线程间不同 的通信方式,最后通过简单的线程池示例以及应用(简单的Web服务器)来串联本章所介绍的内容。 4.1 线...