ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/intro.html
(Generate patch)

Comparing jsr166/src/main/intro.html (file contents):
Revision 1.5 by dholmes, Thu Jun 26 04:56:11 2003 UTC vs.
Revision 1.6 by dl, Thu Jun 26 10:46:55 2003 UTC

# Line 71 | Line 71 | a few utilities methods for using them.
71   A basic (nonblocking) {@link java.util.Queue} interface extending
72   java.util.Collection is introduced into java.util. Existing class
73   java.util.LinkedList is adapted to support Queue, and a new
74 < non-thread-safe {@link java.util.PriorityQueue}
75 < is added.  The java.util.concurrent {@link
76 < java.util.concurrent.LinkedQueue} class supplies an efficient
77 < thread-safe non-blocking queue.
74 > non-thread-safe {@link java.util.PriorityQueue} is added.  The
75 > java.util.concurrent {@link
76 > java.util.concurrent.ConcurrentLinkedQueue} class supplies an
77 > efficient sclable thread-safe non-blocking FIFO queue, and {@link
78 > java.util.concurrent.ConcurrentLinkedStack} provides a similar
79 > non-blocking LIFO stack.
80  
81   <p> Five implementations in java.util.concurrent support the extended
82   {@link java.util.concurrent.BlockingQueue} interface, that defines
# Line 141 | Line 143 | threads to exchange objects at a rendezv
143  
144   <h2>Concurrent Collections</h2>
145  
146 < This package supplies a few Collection implementations designed for
147 < use in multithreaded contexts: {@link
146 > Besides Queues, this package supplies a few Collection implementations
147 > designed for use in multithreaded contexts: {@link
148   java.util.concurrent.ConcurrentHashMap}, {@link
149   java.util.concurrent.CopyOnWriteArrayList}, and {@link
150   java.util.concurrent.CopyOnWriteArraySet}.
151  
152 + <p>The "Concurrent" prefix for classes is a shorthand
153 + indicating several differences from similar "synchronized"
154 + classes. For example <tt>java.util.Hashtable</tt> and
155 + <tt>Collections.synchronizedMap(new HashMap())</tt> are
156 + synchronized. But {@link
157 + java.util.concurrent.ConcurrentHashMap} is "concurrent".
158 + A concurrent collection (among other kinds of classes) is
159 + thread-safe, but not governed by a single exclusion lock. So, in the
160 + particular case of ConcurrentHashMap, it safely permits any number of
161 + concurrent reads as well as a tunable number of concurrent writes.
162 + There may still be a role for "synchronized" classes in some
163 + multithreaded programs -- they can sometimes be useful when you need
164 + to prevent ALL access to a collection via a single lock, at the
165 + expense of much poor scalability. In all other cases, "concurrent"
166 + versions are normally preferable.
167 +
168   <p> Most concurrent Collection implementations (including most Queues)
169 < differ from the usual java.util conventions in that their Iterators
169 > also differ from the usual java.util conventions in that their Iterators
170   provide <em>weakly consistent</em> rather than fast-fail traversal. A
171   weakly consistent iterator is thread-safe, but does not necessarily
172   freeze the collection while iterating, so it may (or may not) reflect

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines