title: java & threads: interrupted exceptions & how to properly use BlockingQueue's take() method
body: <p>What exactly happens when there is nothing on the queue and a take() is called.  The API says the method will wait but does that mean the CPU spins checking for empty/not empty until an item is on the queue or does it mean that the thread yields and will be awoken by an interrupt?  If it is the case of the former, I would probably want to see if the queue is empty and if it is call thread.yield() to give up processor time.  My question is really do I need to call yield or does some inner mechanism handle that for me?</p>
  
  <p>Secondly, what is the interrupted exception meant for?  If I understand correctly it means that if thread A is executing this method and is waiting for input and another thread B calls threadA.interrupt() then thread A will catch the interrupted exception and presumably pause execution, if it is nice.  Is that the correct way of thinking about it?</p>