我有一个包含对象List<> my_objects的列表。多个线程可以更改此列表。假设我没有任何锁定机制来控制对列表的访问。
如果我正在使用列表中的一个对象并且突然另一个线程将数组设置为空,会发生什么情况?
MyObject o = my_objects[i];
//now a second thread has set my_objects to null
o.myMethod();
会发生 NullPointerException 吗?
此外,如果第二个线程在我在第一个线程中使用它时从列表中删除了考虑的对象,会发生什么?
//second thread:
//y = i
MyObject o2 = my_objects[y];
my_objects.Remove(o2);