tzkr.net
当前位置:首页 >> 线程安全的list有哪些 >>

线程安全的list有哪些

直接用vector就可以了,它是线程安全的.arraylist list=new arraylist();就需要锁了,涉及同步,可以参考网上买票例子做.

解决这个问题通常有两种方法(个人认为) 一:使用synchronized关键字,这个大家应该都很熟悉了,不解释了;二:使用Collections.synchronizedList();使用方法如下: 假如你创建的代码如下:List<Map<String,Object>> data=new

MSDN说了,List类就是线程安全的.但是,他只负责List的线程安全,不能负责List元素访问的线程安全.也就是说,他保证,对list进行元素的增加,删除什么的,是线程安全的.但对于其中的每个元素的内部信息,比如属性修改什么的,他就没有办法管了.

参考MSDNLIST线程安全--------------------------------------------------------------------------------此类型的公共静态(在 Visual Basic 中为 Shared)成员是线程安全的. 但不能保证任何实例成员是线程安全的.只要不修改该集合, List就可以同时支持多个阅读器. 枚举整个集合本质上不是一个线程安全的过程.在枚举与一个或多个写访问竞争的罕见情况下,确保线程安全的唯一方法是在整个枚举期间锁定集合.若允许多个线程对集合执行读写操作,您必须实现自己的同步.

搞个mutex,再操作list

你说的是java还是C++?java中解决这个问题通常有两种方法 一:使用synchronized关键字;二:使用Collections.synchronizedList(); 假如你创建的代码如下:List<Map<String,Object>> data=new ArrayList<Map<String,Object>>(); 那么为

arraylist和linkedlist都不是线程安全的

直接用Vector就可以了,它是线程安全的.ArrayList list=new ArrayList();就需要锁了,涉及同步,可以参考网上买票例子做.

是不安全的,你可以参考如下内容: 用arraylist时,出现如下错误: exception in thread "thread-1" java.lang.arrayindexoutofboundsexception: 452 at java.util.arraylist.add(arraylist.java:352) 改为list list=collections.synchronizedlist(new arraylist())

最通俗的解释就是:当多个线程同时操作一个类的时候,保证不出现数据错误问题,比如现在两个线程,一个先充值100,另一个消费50,假设原有的是100,那么最终的结果应该是150,如果出现线程安全问题的话,有可能第一个线程先读取到余额100,然后充值添加100, 此时另外一个线程读的也是100,但是减去50消费,这个时候,第一个线程准备写入数据,变成了200, 而第二个线程也写入数据,变成50,这个就是线程安全问题了ArrayList是线程不安全的类,如果你想用线程安全的,可以用Vector

网站首页 | 网站地图
All rights reserved Powered by www.tzkr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com