title: Which Java blocking queue is most efficient for single-producer single-consumer scenarios
body: <p>I'm working on a standard Java system with critical timing requirements for my producers (1/100s of ms matters). </p>
  
  <p>I have a producer placing stuff in a blocking queue, and a single consumer later picking up that stuff and dumping it to a file.  The consumer blocks when data is not available. </p>
  
  <p>Obviously, blocking queue is the appropriate interface, but which actual implementation should I choose if I want to <em>minimize the cost to the producer</em>? I wan to play as little as possible on things like locking and allocating when I am putting stuff in the queue, and I don't mind if the consumer has to wait a lot longer or work a lot harder.</p>
  
  <p>Is there an implementation that can be faster because I only have a single consumer and single producer ? </p>