title: Reason for ConcurrentModificationException on ArrayLists iterator.next()
body: <p>I have no idea why a ConcurrentModificationException occurs when i iterate over an ArrayList. The ArrayList is methode scoped, so it should not be visible by other threads which execute the same code. At least if i understodd multi threading and variable scopes correctly.</p>
  
  <pre><code>Caused by: java.util.ConcurrentModificationException
  at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)
  at com....StrategyHandler.applyStrategy(StrategyHandler.java:184)
  
  private List&lt;Order&gt; applyStrategy(StorageObjectTree storageObjectTree) {
      ...
      List&lt;OrderHeader&gt; finalList = new ArrayList&lt;Order&gt;();
  
      for (StorageObject storageObject : storageObjectTree.getStorageObjects()) {
  
          List&lt;Order&gt; currentOrders = strategy.process(storageObject);
          ...
          if (currentOrders != null) {
            Iterator&lt;Order&gt; iterator = currentOrders.iterator();
            while (iterator.hasNext()) {
              Order order = (Order) iterator.next();     // line 64
              // read some values from order
            }
  
            finalList.addAll(currentOrders);
          }
      }
  
      return finalList;
  }
  </code></pre>
  
  <p>Can anybody give me an hint what could be the source of the problem?</p>