如果我有一個多線程環境中的組件列表,並且如果我在此列表上執行任何操作,除了添加(我在此例中使用列表中的同步關鍵字)並獲取(方法由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