tzkr.net
当前位置:首页 >> list线程安全的集合 >>

list线程安全的集合

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

可以利用Collections工具类的synchronizedSet方法修饰一个非同步的Set变成同步Set Set<T> set = new HashSet<T>(); // 非同步,非线程安全的Set Set<T> syncSet = Collections.synchronizedSet(set); // 返回了一个线程安全的Set

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

理论上来说你的product list应该是线程安全的,你把你的代码贴出来看看呗,看看你是怎么操作product,又是如何出现数据不一致的

arraylist和linkedlist都不是线程安全的

在onItemClickListener里面有一个position的参数,也就是对应你在给ListView设置适配器的时候的List<item> list 之中的下标.你可以通过list中的map也好,还是类的对象也好,是map的话就是 list.get(position).get(“图片地址的key”);是对象的话就是 list.get(position).ImagePath;(比如说你在类中给对象定义的属性是imagePath)就可以或得到图片的链接.然后就是一个简单的Intent传值的问题了

一些历史类的一般是线程安全的,例如:vector,hashtable等在jdk升级后,出现了替代一些集合的类,arraylist,hashmap等,一般都是线程不安全的.

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

list集合: list<string> list=new arraylist<string>(); list.add("a"); list.add("b"); list.add("c"); //将现有的list集合转换为线程安全的 list=collections.synchronizedlist(list); system.out.println(list); set集合: set<string> set=new hashset<string>()

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