东道网站建设,良品铺子网络营销案例,有模板如何做网站,广州建筑公司招聘List 常见类以及各自优缺点可自行参考 https://blog.csdn.net/weixin_39883065/article/details/111197724
本机环境
java 版本#xff1a;1.8.0_161 window 信息#xff1a;
测试代码
下面通过代码测试 List 线程安全类 Vector、Collections.synchronizedList(List lis…List 常见类以及各自优缺点可自行参考 https://blog.csdn.net/weixin_39883065/article/details/111197724
本机环境
java 版本1.8.0_161 window 信息
测试代码
下面通过代码测试 List 线程安全类 Vector、Collections.synchronizedList(List list)、CopyOnWriteArrayList
测试添加 1 亿数据开启 100 个线程每个线程插入 100万
public class TestList {public static void main(String[] args) throws InterruptedException {long startTime System.currentTimeMillis();// 线程不安全// ListInteger list new ArrayList();// 线程安全 100000000 耗时 27357// ListInteger list new Vector();// 线程安全 100000000 耗时 22023ListInteger list Collections.synchronizedList(new ArrayList());// 线程安全 100000000 耗时//ListInteger list new CopyOnWriteArrayList();int threadNum 100;CountDownLatch countDownLatch new CountDownLatch(threadNum);for (int i 0; i threadNum; i) {Thread thread new Thread(() - {for (int j 0; j 1000000; j) {list.add(j);}countDownLatch.countDown();});thread.start();}countDownLatch.await();long endTime System.currentTimeMillis();System.out.println(list.size());System.out.println(list.getClass()耗时 (endTime-startTime));}
}ArrayList 结果 Collections.synchronizedList(List list) 结果 Vector 结果 CopyOnWriteArrayList 结果暂无结果运行超 20 分钟放弃测试
总结
读多写少的情况下推荐使用 CopyOnWriteArrayList 方式读少写多的情况下推荐使用 Collections.synchronizedList() 和 Vector 差距不大