Look up Queue in the javadoc. It is an interface which is a contract that tells you the methods any implementing class must have, but isn't a class you can instantiate.
So, what can you create? In the doc is a section called All Known Implementing Classes. You can put any concrete (not abstract) classes in that list in your new clause.
Queue myQueue = new LinkedBlockingQueue().
How do you decide which of those to use? Put your feet up, read the doc on each one and see which fits your needs the best.
Any code that uses Queue, say as a parameter, will accept any of those implementing classes, which is pretty slick. So if you can, write all of your code except the instantiation code to reference Queue only. In real life systems that makes code much easier to live with over time; in school work and tiny programs it's just good practice.
Lemme know if that helps!
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi