title: Java: Does LinkedBlockingQueue take into account order of consumers?
body: <p>I have 3 threads: 2 consumers, <code>ConsumerA</code> and <code>ConsumerB</code>, and a <code>Producer</code>.</p>
  
  <p>I also have a <code>LinkedBlockingQueue queue</code></p>
  
  <p>At t=1: <code>ConsumerA</code> calls queue.take()</p>
  
  <p>At t=2: <code>Consumer</code>B calls queue.take()</p>
  
  <p>At t=3: <code>Producer</code> calls queue.put(foo)</p>
  
  <p>Is it guaranteed that ConsumerA receives foo before ConsumerB? In other words, the order in which the consumers invokes <code>take()</code> is the order in which each is notified?</p>
  
  <p>If not, is there an alternative data structure that will give higher priority based on order?</p>