日期:2014-05-18  浏览次数:21035 次

简单问题,泛型是线程安全吗?
如题!

我以前的时候会这样写
private ArrayList arr= ArrayList.Synchronized(new ArrayList());
现在换成
private List<string> list = new List<string>();
是线程安全的吗?

还有
private Hashtable HTTcpCar = Hashtable.Synchronized(new Hashtable());
现在换成
Dictionary<string, ClientState> d = new Dictionary<string, ClientState>();
是线程安全的吗?

如果不是,我用泛型的时候怎么实现线程安全?

------解决方案--------------------
使用lock(ArrayList.SyncRoot )进行同步

------解决方案--------------------
不是。
------解决方案--------------------
公共静态成员是线程安全的。但不能保证任何实例成员是线程安全的
------解决方案--------------------
是不是线程安全跟范型没什么关系,关键是看你的方法是怎么写的。
------解决方案--------------------
加锁就可以了
------解决方案--------------------
楼上和楼上的楼上说得很对!
重点在于你的方法!
在线程中锁定数据就安全了