论 ArrayList如何实现线程安全

一:使用synchronized关键字

二:使用Collections.synchronizedList();

        假如你创建的代码如下:List<Map<String,Object>> data=new ArrayList<Map<String,Object>>();

        那么为了解决这个线程安全问题你可以这么使用Collections.synchronizedList(),如:

        List<Map<String,Object>> data=Collections.synchronizedList(new ArrayList<Map<String,Object>>());

       其他的都没变,使用的方法也几乎与ArrayList一样,大家可以参考下api文档;

额外说下 ArrayList与LinkedList;这两个都是接口List下的一个实现,用法都一样,但用的场所的有点不同,ArrayList适合于进行大量的随机访问的情况下使用,LinkedList适合在表中进行插入、删除时使用,二者都是非线程安全,解决方法同上(为了避免线程安全,以上采取的方法,特别是第二种,其实是非常损耗性能的)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小灰灰

线程安全的容器小结

线程安全的容器 列表 线程安全的列表有 Vector , CopyOnWriteArrayList 两种,区别则主要在实现方式上,对锁的优化上; 后者主要采...

1998
来自专栏计算机视觉与深度学习基础

Leetcode 91 Decode Ways

A message containing letters from A-Z is being encoded to numbers using the fol...

1967
来自专栏Phoenix的Android之旅

Java面试基础之ArrayList操作

ArrayList应该是Java开发中经常见到的数据结构了。 曾经在一个面试中遇到这么个问题,

872
来自专栏程序生活

Leetcode-Easy 101. Symmetric Tree

101. Symmetric Tree 描述: 判断一个颗二叉树是否左右对称 ? 思路: 将二叉树的左右节点对放在的队列里,然后出队,判断节...

3397
来自专栏算法与数据结构

数据结构 重点详解

线性数据结构 线性表-顺序表 代码实现: #include <bits/stdc++.h> #define TRUE 1 #define FALSE 0...

2696
来自专栏学习力

《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

2794
来自专栏尾尾部落

[剑指offer] 最小的K个数

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。

1732
来自专栏来自地球男人的部落格

[LeetCode] 134. Gas Station

【原题】 There are N gas stations along a circular route, where the amount of gas...

1918
来自专栏jeremy的技术点滴

Java开发小技巧_02

4064
来自专栏海天一树

小朋友学Java(13):控制台输入

C语言用scanf来输入,C++用cin来输入,java则用Scanner来输入。 程序 import java.util.*; public class Sc...

2766

扫码关注云+社区