linkedblockingqueue is more efficient than arrayblockingqueue