BlockingQueue implementation(including getAll method) using semaphore