title: Java BlockingQueue with multiple consumer threads unfair
body: <p>I'm creating a resource pool using a (java) LinkedBlockingQueue, where </p>
  
  <ul>
  <li>the resource elements are equivalent, belong to a pool where their ordering is indifferent.</li>
  <li>the consumers are competing threads grabbing one resource at a time, with a "pull" operation,
  working with the resource, and then giving it back to the pool, with an "add" operation.</li>
  <li>While a particular resource is being used by a consumer thread it must not be available to other consumer threads.</li>
  </ul>
  
  <p>The problem is:  LinkedBlockingQueue <em>does not make a FIFO of waiting consumers</em>, and the level of service is not uniform.</p>
  
  <p>Any ideas on the topic ?
  Thanks in advance.</p>