aspose file tools*
The moose likes Beginning Java and the fly likes bounded vs unbounded Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "bounded vs unbounded" Watch "bounded vs unbounded" New topic
Author

bounded vs unbounded

Alan Shiers
Ranch Hand

Joined: Sep 24, 2003
Posts: 236
Hi there,

I'm working on a project that is going to require a queue. When searching the java docs there are several to choose from:

java.util.concurrent.ArrayBlockingQueue<E>
java.util.concurrent.ConcurrentLinkedQueue<E>
java.util.concurrent.DelayQueue<E>
java.util.concurrent.LinkedBlockingQueue<E>
java.util.concurrent.PriorityBlockingQueue<E>
java.util.concurrent.SynchronousQueue<E>

Some of these are referred to as being "bounded" while others are "unbounded". I don't understand the meanings behind these terms, which makes it hard to make a choice as to which one is most suitable for my project. Could someone please explain, in laymans terms, what the difference is between a bounded queue and an unbounded queue?

PROJECT DESCRIPTION:

My project will involve several threads running, each of which will access and insert into the queue an EMessage object, which is essentially an email message with subject line (two Strings in other words). The queue will then release each EMessage, one at a time, to another class that will perform the actual processing of the email. Hope this helps. Perhaps with this description you can recommend the appropriate type queue class to use?

Alan
[ December 12, 2006: Message edited by: Alan Shiers ]
Stan James
(instanceof Sidekick)
Ranch Hand

Joined: Jan 29, 2003
Posts: 8791
Blocking Queue doc says it's optionally "capacity bounded" meaning that you can only put a specified number of items in the queue. If you try to put more, the put operation blocks until another thread takes something out and makes room. Exercise for the original poster: Which other ones said they were bounded? Does that definition fit them, too?


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
Alan Shiers
Ranch Hand

Joined: Sep 24, 2003
Posts: 236
Following are those queue implementations that state they are bounded:

ArrayBlockingQueue<E>
LinkedBlockingQueue<E> (Optionally bounded)

So, I believe I understand now. Bounded simply means that the queue has a specific capacity that cannot be exceeded. Unbounded is one who capacity can expand, at least as far as memory consumption will permit.

So, I believe I would be looking for an unbounded queue. Since I'm not too concerned about the growing capacity of the queue, and since the queue will be accessed by multiple threads, my best choice is probably ConcurrentLinkedQueue.

Thanks,

Alan
Stan James
(instanceof Sidekick)
Ranch Hand

Joined: Jan 29, 2003
Posts: 8791
Sounds cool. Have to admit I've never read up on ConcurrentLinkedQueue. Guess I oughtta go do that. Let us know how it works out!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: bounded vs unbounded
 
Similar Threads
Generic programming
declarations with <> operator with classes like S , T , K, V, M, B
Purpose of Wild Card in Reference
Parsing XML agaist XSD using - (Want to remove the physical path of xsd from xml)
JMS and instance pool of msg driven beans