// volatile 的作用是保证读操作的可见性privatetransientvolatileObject[] array;publicbooleanadd(E e) {synchronized (lock) {Object[] es =this.array;int len =es.length; es =Arrays.copyOf(es, len +1); # 复制数组 es[len] = e; this.array= a;returntrue; }}staticfinalclassCOWIterator<E> implementsListIterator<E> { /** Snapshot of the array */privatefinalObject[] snapshot; /** Index of element to be returned by subsequent call to next. */privateint cursor;COWIterator(Object[] es,int initialCursor) { cursor = initialCursor; snapshot = es; }publicvoidremove() {thrownewUnsupportedOperationException(); }...}