【发布时间】:2014-03-10 13:24:55
【问题描述】:
我知道ArrayList 不是线程安全的,但我不确定它的确切含义。
在ThreadA 和ThreadB 都使用ArrayList 的情况下,哪些情况会导致问题并需要同步?
- 两个线程同时读取同一个索引
-
ThreadA替换ThreadB尝试同时访问的元素,假设您不关心ThreadB是获取旧元素还是新元素。
【问题讨论】:
-
“访问同一个索引”是指阅读、写作还是两者兼而有之?
-
线程安全通常意味着写操作和状态改变。如果两个线程都只是使用列表来阅读,那你很好。
-
"你不在乎
ThreadB获取的是旧元素还是新元素。"如果ThreadB两者兼而有之怎么办?会不会有问题? -
@BilltheLizard 那里,为清楚起见进行了编辑
-
@Heuster 是的,那会有问题!
标签: java arraylist concurrency