Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import lombok.SneakyThrows;
- import javax.annotation.concurrent.NotThreadSafe;
- import java.util.Iterator;
- import java.util.concurrent.BlockingQueue;
- @NotThreadSafe
- public class BlockingQueueIterator<T> implements Iterator<T> {
- private final BlockingQueue<QueueEntry<T>> queue;
- private QueueEntry<T> queueEntry;
- public BlockingQueueIterator(BlockingQueue<QueueEntry<T>> queue) {
- this.queue = queue;
- }
- @SneakyThrows
- @Override
- public boolean hasNext() {
- this.queueEntry = queue.take();
- if (queueEntry.data != null) {
- return true;
- } else if (queueEntry.e != null) {
- throw queueEntry.e;
- } else {
- return false;
- }
- }
- @Override
- public T next() {
- return queueEntry.data;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement