为了账号安全,请及时绑定邮箱和手机立即绑定

arraylist同步的问题

arraylist同步的问题

C#
慕慕森 2018-12-16 13:08:49
我的一个线程往一个arraylist添加数据<BR>一个线程从arraylist移除数据<BR><BR>1.如何保证添加数据的过程不被阻塞问题补充: 什么时候会发生阻塞? 一个线程从arraylist移除数据 时会锁定arraylist 此时就不能添加数据了吧
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

在多个线程访问同一个变量的时候,最好使用lock关键字进行锁定。例如 private static object synRoot = new Object(); private static ArrayList arrayList = new ArrayList(); public static void AddItem(object value) { if(!arrayList.Contains(value)) { lock(synRoot) { if(!arrayList.Contains(value)) { arrayList.Add(value); } } } } 在这里使用了一种叫做双验证的方法来保证多个线程对静态变量访问时的数据同步。还有就是被锁定的对象最好是除了当前的这个类以外不能被其他对象使用,否则就会由于同一个对象被多处锁定而造成循环等待的问题。

查看完整回答
反对 回复 2018-12-20
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

这个不需要考虑把。他自己会排队来等待前一个操作完成的。

查看完整回答
反对 回复 2018-12-20
  • 2 回答
  • 0 关注
  • 710 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信