title: Android 2.1 GoogleMaps ItemizedOverlay ConcurrentModificationException
body: <p>I cannot figure out the origin of the <code>ConcurrentModificationException</code>. In my <code>activity</code> I'm calling 
  <code> updateMapOverlay()</code>. I'm also calling <code>updateMapOverlay()</code> inside another Thread (a <code>TimerTask</code>) that is invoked on regular intervals. I'm taking the appropriate locks when invoking <code>updateMapOverlay()</code> from both the threads. Is this problem being caused because I'm invoking <code>updateMapOverlay</code> from inside a non-UI thread (i.e., <code>TimerTask</code>). Has anyone else faced a similar issue ? </p>
  
  <p><code>
      private void updateMapOverlay() {</p>
  
  <pre><code>    this.itemizedOverlay.refreshItems(createOverlayItemsList());
      List&lt;Overlay&gt; overlays = mapView.getOverlays();
      overlays.clear();
      overlays.add(cotItemizedOverlay);
              this.mapview.invalidate();
  
  }
  </code></pre>
  
  <p></code>   </p>
  
  <p>Thanks. </p>
  
  <p><strong>Exception</strong>: </p>
  
  <pre><code>W/dalvikvm(10641): threadid=3: thread exiting with uncaught exception (group=0x4001b180)
  E/AndroidRuntime(10641): Uncaught handler: thread main exiting due to uncaught exception
  E/AndroidRuntime(10641): java.util.ConcurrentModificationException
  E/AndroidRuntime(10641):    at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)
  E/AndroidRuntime(10641):    at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:41)
  E/AndroidRuntime(10641):    at com.google.android.maps.MapView.onDraw(MapView.java:494)
  E/AndroidRuntime(10641):    at android.view.View.draw(View.java:6535)
  E/AndroidRuntime(10641):    at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
  E/AndroidRuntime(10641):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
  E/AndroidRuntime(10641):    at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
  E/AndroidRuntime(10641):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
  E/AndroidRuntime(10641):    at android.view.View.draw(View.java:6538)
  E/AndroidRuntime(10641):    at android.widget.FrameLayout.draw(FrameLayout.java:352)
  E/AndroidRuntime(10641):    at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
  E/AndroidRuntime(10641):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
  E/AndroidRuntime(10641):    at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
  E/AndroidRuntime(10641):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
  E/AndroidRuntime(10641):    at android.view.View.draw(View.java:6538)
  E/AndroidRuntime(10641):    at android.widget.FrameLayout.draw(FrameLayout.java:352)
  E/AndroidRuntime(10641):    at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
  E/AndroidRuntime(10641):    at android.view.ViewRoot.draw(ViewRoot.java:1349)
  E/AndroidRuntime(10641):    at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
  E/AndroidRuntime(10641):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
  E/AndroidRuntime(10641):    at android.os.Handler.dispatchMessage(Handler.java:99)
  E/AndroidRuntime(10641):    at android.os.Looper.loop(Looper.java:123)
  E/AndroidRuntime(10641):    at android.app.ActivityThread.main(ActivityThread.java:4363)
  E/AndroidRuntime(10641):    at java.lang.reflect.Method.invokeNative(Native Method)
  E/AndroidRuntime(10641):    at java.lang.reflect.Method.invoke(Method.java:521)
  E/AndroidRuntime(10641):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  E/AndroidRuntime(10641):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  E/AndroidRuntime(10641):    at dalvik.system.NativeStart.main(Native Method)
  I/Process (   95): Sending signal. PID: 10641 SIG: 3
  </code></pre>