package de.invesdwin.util.collections.iterable.concurrent; import javax.annotation.concurrent.ThreadSafe; import de.invesdwin.util.collections.iterable.ICloseableIterator; @ThreadSafe public class SynchronizedIterator<E> implements ICloseableIterator<E> { private final ICloseableIterator<E> delegate; public SynchronizedIterator(final ICloseableIterator<E> delegate) { this.delegate = delegate; } @Override public synchronized boolean hasNext() { return delegate.hasNext(); } @Override public synchronized E next() { return delegate.next(); } @Override public synchronized void close() { delegate.close(); } }