Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. import lombok.SneakyThrows;
  2.  
  3. import javax.annotation.concurrent.NotThreadSafe;
  4. import java.util.Iterator;
  5. import java.util.concurrent.BlockingQueue;
  6.  
  7. @NotThreadSafe
  8. public class BlockingQueueIterator<T> implements Iterator<T> {
  9.  
  10. private final BlockingQueue<QueueEntry<T>> queue;
  11.  
  12. private QueueEntry<T> queueEntry;
  13.  
  14. public BlockingQueueIterator(BlockingQueue<QueueEntry<T>> queue) {
  15. this.queue = queue;
  16. }
  17.  
  18. @SneakyThrows
  19. @Override
  20. public boolean hasNext() {
  21. this.queueEntry = queue.take();
  22.  
  23. if (queueEntry.data != null) {
  24. return true;
  25. } else if (queueEntry.e != null) {
  26. throw queueEntry.e;
  27. } else {
  28. return false;
  29. }
  30. }
  31.  
  32. @Override
  33. public T next() {
  34. return queueEntry.data;
  35. }
  36.  
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement