title: Does a 'blocking' queue defeat the very purpose of multi threading
body: <p>The ArrayBlockingQueue will block the producer thread if the queue is full and it will block the consumer thread if the queue is empty.</p>
  
  <p>Does not this concept of blocking goes against the very idea of multi threading? if I have a 'main' thread and let us say  I want to delegate all 'Logging' activities to another thread. So Basically inside my main thread,I create a Runnable to log the output and I put the Runnable on an ArrayBlockingQueue. The whole purpose of doing this is have the 'main' thread return immediately without wasting any time in an expensive logging operation.</p>
  
  <p>But if the queue is full, the main thread will be blocked and will wait until a spot is available. So how does it help us?</p>