HaniiPuppy

How to synchronize remove

Jul 1st, 2014
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.99 KB | None | 0 0
  1.     List<T> members;
  2.     SortedListHandler<T> membersHandler;
  3.    
  4.     Collection<LayeredSortedQueue<T, K>> memberQueues;
  5.    
  6.     Lambda<T, K> keyGetter;
  7.    
  8.     @Override
  9.     public boolean add(T e)
  10.     {
  11.         membersHandler.Insert(members, e);
  12.         return true;
  13.     }
  14.  
  15.     @Override
  16.     public boolean offer(T e)
  17.     { return add(e); }
  18.  
  19.     @Override
  20.     public T remove()
  21.     {
  22.         LayeredSortedQueue<T, K> currentFrom = null;
  23.         T current = null;
  24.        
  25.         if(!members.isEmpty())
  26.             current = members.get(0);
  27.        
  28.         for(LayeredSortedQueue<T, K> i : memberQueues)
  29.         {
  30.             if(current == null || keyGetter.getMember(i.peek()).compareTo(keyGetter.getMember(current)) < 0)
  31.             {
  32.                 currentFrom = i;
  33.                 current = i.peek();
  34.             }
  35.         }
  36.        
  37.         if(currentFrom == null)
  38.             return members.remove(0);
  39.         else
  40.             return currentFrom.remove();
  41.     }
Advertisement
Add Comment
Please, Sign In to add comment