社区
C#
帖子详情
ArrayList多线程问题。
lxcooi
2005-12-29 10:00:39
.Net文档中关于ArrayList有改下描述:
“此类型的公共静态(在 Visual Basic 中为 Shared)成员对于多线程操作是安全的。不能保证实例成员是线程安全的。”
我在一个Web工程中使用了一个ArrayList的静态对象。并且在用户访问时会修改其中的元素和元素数目。
我的问题是当多用户访问时,这个对像能保证不发生冲突么?
换句话说就是静态的ArrayList能保证多线程修改而不发生异常么??
...全文
280
3
打赏
收藏
ArrayList多线程问题。
.Net文档中关于ArrayList有改下描述: “此类型的公共静态(在 Visual Basic 中为 Shared)成员对于多线程操作是安全的。不能保证实例成员是线程安全的。” 我在一个Web工程中使用了一个ArrayList的静态对象。并且在用户访问时会修改其中的元素和元素数目。 我的问题是当多用户访问时,这个对像能保证不发生冲突么? 换句话说就是静态的ArrayList能保证多线程修改而不发生异常么??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mobydick
2005-12-29
打赏
举报
回复
可以这样
ArrayList al = new ArrayList();
lock(al.SyncRoot)
{
//do something...
}
alesso
2005-12-29
打赏
举报
回复
声明一个
public static readonly object m_LockMe = new object();
操作ArrayList的时候
lock (m_LockMe) {
DoSomething();
}
alesso
2005-12-29
打赏
举报
回复
楼上的更好
ArrayList
多线程
调用add()可能出现的
问题
文章主要探讨了
多线程
下
ArrayList
的并发
问题
。一是
多线程
调用Add()添加元素时会出现下标越界
问题
,二是高并发下会有空值
问题
。还分析了
问题
产生的原因,并给出解决办法,即使用Collections.synchronizedList获取线程安全的list,遍历最好放在同步块里。
ArrayList
多线程
操作的
问题
文章探讨了在
多线程
环境下操作
ArrayList
可能出现的并发修改异常、数据不一致性、索引错位和内存可见性
问题
,原因是
ArrayList
非线程安全。提供了使用线程安全集合、并发集合、显式同步和原子操作等解决方案来保证操作安全和数据一致性。
ArrayList
源码和
多线程
安全
问题
分析
本文分析了
ArrayList
在
多线程
环境下的线程安全
问题
,包括元素添加时可能出现的数据覆盖和数组扩容时的并发异常。通过代码验证,展示了在并发情况下
ArrayList
的不安全性,并指出
ArrayList
的其他并发操作也存在类似
问题
。建议在
多线程
场景下使用线程安全的数据结构,如Vector或Collections.synchronizedList。
ArrayList
多线程
环境下的
问题
ArrayList
在
多线程
环境下可能出现数组越界异常ArrayIndexOutOfBoundsException和元素值覆盖
问题
。当两个线程同时尝试add操作,可能由于不及时的size更新导致越界,或者在元素设置时未同步,造成值的覆盖。理解这些潜在
问题
对于优化并发代码至关重要。
多线程
下
ArrayList
出现null的
问题
在项目中使用
ArrayList
时遇到了
多线程
导致的空指针异常
问题
,由于
ArrayList
不是线程安全的,多个线程并发修改可能导致数据异常。通过代码测试验证了这个
问题
,并反思了对Java集合源码理解不足。解决方案包括使用Collections.synchronizedList包装
ArrayList
或者选择线程安全的CopyOnWrite
ArrayList
或Vector。
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章