Do you really need a concrete class here? What about a BlockingDeque interface?