Well, there really aren’t too many options. Let me go through the listed subclasses:
DelayQueue, LinkedBlockingDeque, PriorityBlockingQueue, and SynchronousQueue are all made for special cases requiring extra functionality; they don’t make sense in this scenario.
That leaves only ArrayBlockingQueue and LinkedBlockingQueue. If you know how to tell whether you need an ArrayList or a LinkedList, you can probably answer this one yourself.
Note that in LinkedBlockingQueue, “linked nodes are dynamically created upon each insertion”; this might tend to push you toward ArrayBlockingQueue.