如果我有一个多线程环境中的组件列表,并且如果我在此列表上执行任何操作,除了添加(我在此例中使用列表中的同步关键字)并获取(方法由a组件是线程安全的),线程安全吗?线程安全简单
public class Test {
private final ArrayList<Component> myContainer = new ArrayList<Component>();
public void add(Component){
synchronized(myContainer){
myContainer.add(Component)
}
}
public void useComponents()
{
for(Component c : myContainer)
c.use(); // method thread-safe
}
// no other operations on myContainer
}
提供必要的代码以复制您的方案。在当前的描述中,代码仍然可能是线程不安全的。 – 2014-11-02 12:08:05
Allawys线程不安全? @LuiggiMendoza – kaoziun 2014-11-02 12:27:53
'useComponents'是线程不安全的。任何其他线程可能在遍历myContainer的内部元素时添加一个新的Component。 – 2014-11-02 12:29:01