title: Synchronized collection
body: <p>Since c is already synchronzied collection, and it's thus thread safe. But why do we have to use <code>synchronized(c)</code> again for the iteration? Really confused. Thanks.</p>
  
  <p>" It is imperative that the user manually synchronize on the returned
  collection when iterating over it:</p>
  
  <pre><code>Collection c = Collections.synchronizedCollection(myCollection);
   ...
   synchronized(c) {
       Iterator i = c.iterator(); // Must be in the synchronized block
       while (i.hasNext()) {
           foo(i.next());
       }
  }
  </code></pre>
  
  <p>Failure to follow this advice may result in non-deterministic behavior. "
  <a href="http://docs.oracle.com/javase/6/docs/api/java/util/Collections">http://docs.oracle.com/javase/6/docs/api/java/util/Collections</a>.</p>