| Defects |
| 4200095 |
(coll) overstated wording regarding fail-fast behavior of iterators |
| 5045147 |
(coll) Adding null to an empty TreeSet should throw NullPointerException |
| 6312706 |
(coll) Map entrySet iterators should return different entries on each call to next() |
| 6327883 |
(coll spec) Add @see newSetFromMap for Map implementations without Set implementations |
| 6394757 |
(coll) AbstractSet.removeAll is surprisingly dependent on relative collection sizes |
| 6420847 |
(coll) Clarify that serializable collections need serializable elements |
| 6433005 |
(coll) Collection wrappers should implement Serializable iff wrapped collection does |
| 6475385 |
(coll) modCount inconsistency / bad Collections.reverse implementation |
| 6546713 |
(coll) Clarify meaning of "(optional)" in collections docs |
| 6576056 |
(coll) AbstractSet/AbstractMap equals() method is asymmetric with large sets/maps |
| 6579224 |
(coll) toString() on self-referential Checked collections causes stack overflow |
| RFEs |
| 4429536 |
(coll) WeakHashMap limitation: values refer to keys |
| 4500542 |
(coll) WeakIdentityHashMap wanted |
| 4848853 |
(coll) Modify LinkedHashMap and LinkedHashSet to include first() and last() |
| 5029031 |
(coll) JDK1.5 The method Collections.checkedQueue(Queue<T>,Class) is missing |
| 6189055 |
(timer) Add nanosecond support to java.util.Timer |
| 6266354 |
(coll) LinkedHashMap to support ListIterators |
| 6327463 |
(coll) Collections.synchronizedMap should return ConcurrentMap |
| 6337998 |
(coll) AbstractList.equals() uses Iterator which has a large performance cost |
| 6350345 |
Add filter class to java.util |
| 6355410 |
Impossible for subclasses to preserve the equals contract |
| 6356745 |
(coll) Add PriorityQueue(Collection, Comparator) |
| 6363651 |
(coll) factory methods in collections classes to ease collection creation |
| 6368844 |
(coll) Provide scalable double-ended lists |
| 6371446 |
(coll) make Collections.SynchronizedCollection and etc. public |
| 6386158 |
(coll) Provide collection class internal consistency validation methods |
| 6389004 |
(coll) Collections.list should take Iterator, not just Enumeration |
| 6392565 |
(coll) LinkedHashMap should contain single boolean constructor |
| 6407460 |
(coll) provide Collections helper methods for new interfaces in JDK 1.6 |
| 6423502 |
(coll) Add value-weak version of WeakHashMap |
| 6431610 |
(coll) util.Hashing class |
| 6431636 |
(coll) New methods for handling iterable sequences in Collection framework |
| 6435963 |
(coll) Hasher interface to be used by a HashMap/HashSet |
| 6437680 |
(coll) Provide convenience methods to support array concatenation |
| 6437681 |
(coll) Provide convenience methods to remove a subarray from an array |
| 6438838 |
(coll) Add Arrays.in(T e, T... elements) |
| 6461901 |
(coll) Add Collections.unmodifiableNavigableXXX, synchronizedNavigableXXX, checkedNavigableXXX |
| 6463989 |
(coll) Provide Iterable utility methods and light-weight Iterable implementations |
| 6471768 |
(coll) Checked Collections to implement interface to expose the checked type |
| 6552529 |
(coll) Map.getEntry(key), Map.getKey(key) |
| 6567419 |
(coll) Add MultiMap, MultiSet interfaces |
| Defects |
| 6374942 |
Improve thread safety of collection .equals() methods |
| 6443670 |
Javadoc for AtomicInteger (et.al.) missing information - get() v.s. intValue() |
| 6458065 |
Executors.privilegedThreadFactory and privilegedCallable should specify permissions |
| 6493942 |
ConcurrentLinkedQueue.remove sometimes very slow |
| 6495521 |
API Javadoc of ConcurrentSkipListMap links to web page NOT describing SkipList |
| 6512397 |
ConcurrentHashMap segment resize threshold improvement |
| 6519887 |
Document whether "done" methods execute before waiters are released |
| 6526284 |
Improve AbstractExecutorService javadoc |
| 6531234 |
What if FutureTask.cancel throws? |
| 6539720 |
PriorityBlockingQueue with ThreadPoolExecutor will cause ClassCastException |
| 6593716 |
Serialized Form javadoc for LinkedBlockingDeque contradicts implementation |
| 6595669 |
regtest LinkedBlockingQueue/OfferRemoveLoops.java fails |
| 6602600 |
Fast removal of cancelled scheduled thread pool tasks |
| 6609775 |
Reduce context switches in DelayQueue due to signalAll |
| 6620164 |
Clarify that BlockingQueue.drainTo() never blocks |
| 6620549 |
ExecutorService#shutdown should clearly state that it does not block |
| 6624849 |
test/java/util/concurrent/Exchanger/NullExchanger.java fails |
| 6625723 |
Excessive ThreadLocal storage used by ReentrantReadWriteLock |
| 6627356 |
Try to preserve Lock invariants even when faced with Thread.stop |
| 6633113 |
test/java/util/concurrent/SynchronousQueue/Fairness.java fails intermittently |
| 6633605 |
Optimize CopyOnWriteArrayList bulk operations on empty collections |
| 6663476 |
FutureTask.get() may return null if set() is not called from run() |
| 6665818 |
FutureTask bullet-proofing |
| RFEs |
| 6317534 |
CyclicBarrier should have a cancel() method |
| 6350736 |
Future hasStarted() and waitForStart() methods |
| 6350741 |
CyclicBarrier notification that barrier has been entered |
| 6351533 |
CyclicBarrier reset() should return the number of awaiters |
| 6358852 |
Add methods on concurrent data structures that interrupt blocked threads |
| 6364794 |
Callable/Future interfaces awkward w.r.t. checked exceptions |
| 6431628 |
Generics support in the concurrency package |
| 6445151 |
Scalable counters |
| 6445158 |
Clocks and improved CyclicBarriers |
| 6445161 |
ConcurrentIdentityHashMap |
| 6445163 |
TimeoutExecutor |
| 6445165 |
implementation scalability improvements |
| 6445167 |
Executor parallel collection operations |
| 6445168 |
Software Transactional Memory |
| 6448185 |
Consider adding StoreStore barriers to all constructor ends |
| 6452337 |
ThreadPoolExecutor should prefer reusing idle threads |
| 6486197 |
ConcurrentHashMap.get should check key identity before equality |
| 6539709 |
There is no way to tell if an ExecutorService is idle |
| 6552960 |
BlockingQueue implementations internal Lock protected, not private |
| 6568991 |
WaitForMultipleObjects features in java.util.concurrent |
| 6575582 |
ThreadPoolExecutor unusable in sandbox WebStart apps |
| 6625724 |
Allow ReentrantReadWriteLock to not track per-thread read holds |
| 6648211 |
Need for blocking ThreadPoolExecutor |
| 6648734 |
Investigate importing features from the Prometheus Project |
| 6673896 |
System ScheduledThreadPoolExecutor/Timer |
| Defects |
| 6458306 |
Executor classes missing unchecked exception specs |
| 6497138 |
Scalability limitation in ConcurrentHashMap on Java 6 |
| 6460501 |
Synchronizer timed acquire still leaks memory |
| 6480405 |
Remove sun.misc.AtomicLong |
| 6503247 |
AQS should not handle RuntimeException during acquire specially |
| 6464365 |
FutureTask.{set,setException} not called by run() |
| 6450200 |
ThreadPoolExecutor idling core threads don't terminate when core pool size reduced |
| 6450205 |
ThreadPoolExecutor does not replace throwing threads |
| 6450207 |
ThreadPoolExecutor doesn't count throwing tasks as "completed" |
| 6450211 |
ThreadPoolExecutor.afterExecute sees RuntimeExceptions, but not Errors |
| 6454289 |
ScheduledThreadPoolExecutor spins while waiting for delayed tasks after shutdown |
| 6458339 |
ThreadPoolExecutor very slow to shut down for large poolSize |
| 6458662 |
ThreadPoolExecutor poolSize might shrink below corePoolSize after timeout |
| 6459119 |
Explain how afterExecute can access a submitted job's Throwable |
| 6522773 |
Decreasing ScheduledThreadPoolExecutor core pool size causes busy spin |
| 6523756 |
ThreadPoolExecutor shutdownNow vs execute race |
| 6558708 |
Rewrite package.html as package-info.java |
| 6415572 |
FutureTask run method can swallow exceptions from done method |
| 6560953 |
Periodic tasks of ScheduledThreadPoolExecutor are not decorated on a second run |
| 6476650 |
Improve ReentrantReadWriteLock code sample |
| 6570566 |
Incorrect range check in CopyOnWriteArrayList subLists |
| 6570575 |
Cannot remove elements from CopyOnWriteArrayList subLists |
| 6570631 |
CopyOnWriteArrayList subLists prohibit even non-structural modifications to parent list |
| 6570924 |
CopyOnWriteArrayList subLists should implement RandomAccess |
| 6576792 |
ThreadPoolExecutor methods leak interrupts when run in pool threads |
| 6574123 |
Help implementers of fair synchronizers |
| 6590649 |
Improve ExecutorCompletionService javadoc |
| Defects |
| 4825214 |
(coll) javadoc typo in TreeMap.java |
| 6244735 |
(coll spec) Minor SortedSet, SortedMap doc fixes |
| 6258108 |
(coll) Improve Comparator, Comparable javadoc |
| 4866451 |
(coll spec) Arrays.binarySearch() says list.size() when it should say a.length |
| 5018268 |
(coll spec) "on a such a" typo in java.util.List and java.util.Map |
| 6306826 |
(coll spec) Hashtable spec inaccuracy |
| 4774490 |
(coll spec) Doc bug in Vector.writeObject(ObjectOutputStream) |
| 6197726 |
(coll) IdentityHashMap.entrySet().toArray(T[] a) is incorrectly implemented |
| 6310858 |
(coll) EnumMap.entrySet().toArray(T[] a) is incorrectly implemented |
| 4991133 |
(coll spec) Typo in the readObject method of the java.util.PriorityQueue class |
| 6186175 |
(coll spec) Redundant method mention in AbstractList documentation |
| 5103030 |
(coll spec) Doc comment out of sync with generified Collection.toArray() |
| 4838705 |
(coll spec) Bug in "toArray" example for Interface "Collection" |
| 4964029 |
(coll spec) Documentation for ArrayList.removeRange() doesn't mention Exceptions |
| 4521038 |
(coll spec) Clarify that ArrayList.contains uses "equals" |
| 4802637 |
(coll) Minor change to TreeMap.getEntry comparison code for performance |
| 4904074 |
(coll) Provide basic Map.Entry class |
| 5018254 |
(coll) 'remove' operation fails in tailMap of a null-key-allowing TreeMap |
| 5018849 |
(coll) TreeSet.contains(null) does not agree with Javadoc |
| 6207984 |
(coll) PriorityQueue.remove(Object o) will remove an object with the same priority as o |
| 6245166 |
(coll spec) TreeMap class documentation should use SortedMap instead of Map |
| 6261984 |
(coll spec) *List collections doc fixes |
| 6264242 |
(coll spec) foo(E o) -> foo(E e) |
| 6268068 |
(coll) PriorityQueue.remove(Object) should use equals, not its ordering, to find element to remove |
| 6269713 |
(coll) Unchecked exception specifications of collection classes are missing or inaccurate |
| 6269720 |
(coll spec) Improve documentation of "natural ordering" |
| 6271387 |
(coll spec) toArray method javadocs are inaccurate |
| 6318553 |
(coll) Arrays.asList maintenance |
| 6282555 |
(coll) Collection toString method optimizations |
| 6318622 |
(coll spec) Collection toString method doc maintenance |
| 6306829 |
(coll spec) Map get(Object) method doc maintenance |
| 6318636 |
(coll) Collection putAll method maintenance |
| 6325410 |
(coll spec) typo in Map specification |
| 4229892 |
(coll spec) Arrays.fill(Object[], ...) should document ArrayStoreException |
| 4936876 |
(coll spec) Vector.copyInto should document ArrayStoreException |
| 6330389 |
(coll spec) SimpleEntry should inherit Map.Entry equals, hashCode spec |
| 6331577 |
(coll spec) Gently denigrate Stack in favor of Deque |
| 6331578 |
(coll spec) Disclaim any guarantees in case of concurrent access |
| 4924316 |
java.util.Random spec problem on synchronization |
| 6355099 |
(coll) PriorityQueue.grow resizes internal array by 4, not 2 |
| 6355660 |
(coll) Vector(Collection) constructor is not thread safe |
| 6360008 |
(coll spec) Collections.addAll confusion over name of formal parameter "a" vs "elements" |
| 6365601 |
(coll) asLifoQueue(...).add(E) should delegate to addFirst, not offerFirst |
| 4974878 |
(coll) Collections and reverse order comparator |
| 6366832 |
(coll) Collections.reverseOrder(null) should return Collections.REVERSE_ORDER |
| 4890211 |
(coll) Collections.ReverseOrder.equals method is lacking |
| 6369494 |
(timer) Timer.TaskQueue is susceptible to ArrayIndexOutOfBounds after OutOfMemoryError |
| 6372554 |
(coll) Collections.ReverseComparator should override readResolve() |
| 6379897 |
Random is not thread-safe; seed should be final |
| 6347106 |
(coll) Make ArrayList(Collection) more threadsafe |
| 6360946 |
(coll) SetFromMap.equals should perform identity check |
| 6360948 |
(coll) Collections.newSetFromMap, asLifoQueue should delegate toString to wrapped collection |
| 6370431 |
(coll) PriorityQueue.fixUp() use >> instead of >>> |
| 6394004 |
(coll) Thread-safety and Performance improvements to PriorityQueue |
| 6396914 |
(coll) Clarify all asLifoQueue(deq) operations except addAll map 1-1 |
| 6242436 |
(coll) TreeMap.SubMap doesn't deserialize properly |
| 6421995 |
(coll) Minor doc fixes |
| RFEs |
| 6301089 |
(coll) Add Collections.newSetFromMap(Map<E,Boolean>) |
| 4137464 |
(coll) TreeMap should have bi-directional iterator |
| 4155650 |
(coll) Sorted Collection Classes with bidirectional navigation |
| 4216399 |
(coll) TreeMap: please make getCeilEntry and getPreviousEntry >>public<< |
| 4294891 |
(coll) Add "next/previous" to both SortedMap and SortedSet |
| 4942830 |
(coll spec) TreeSet.remove - absence of Compara{ble,tor} throws ClassCastException |
| 5048399 |
(coll) please fix anachronisms in collections internal generification |
| 6301085 |
(coll) Add Collections.asLifoQueue(Deque) |
| 6324846 |
(coll) Add Deque.descendingIterator() |
| 4261170 |
(spec) Precisely specify bytes generated by Random.nextBytes |
| 6415641 |
(coll) Getting NavigableMap/NavigableSet right |
| Defects |
| 6189072 |
Add sometimes fails after clear or drainTo in LinkedBlockingQueue |
| 6226308 |
(spec) Semaphore example code contains incorrect field declaration |
| 6233035 |
Clarify Queue and BlockingQueue javadocs by adding tables showing relations among methods |
| 6241823 |
Infinite loop in timed Semaphore.tryAcquire |
| 6253848 |
CyclicBarrier behavior incorrect if "broken" or reset |
| 6256764 |
java.util.concurrent.atomic doc fixes |
| 6301119 |
java.util.concurrent.atomic maintenance |
| 6307455 |
LinkedBlockingQueue.toArray(x) does not set "one-past" element of x to null |
| 6306762 |
java.util.concurrent.locks maintenance |
| 6299797 |
FutureTask.get should document @throws CancellationException |
| 6284408 |
Clarify that FutureTask set methods are invoked automatically by run() |
| 6280606 |
Clarify Executors.newFixedThreadPool spec |
| 5017565 |
Executors.defaultThreadFactory doc should mention MaxPriority |
| 5075597 |
Incomplete javadoc for ScheduledExecutorService.scheduleAtFixedRate() |
| 6179024 |
Clarify what happens if await timeout set to 0 |
| 6309755 |
Clarify "happens-before" relationships |
| 6270647 |
CopyOnWriteArrayList.listIterator erroneously refers to Enumeration methods |
| 6264520 |
DelayQueue confuses "expired" and "unexpired" |
| 6284402 |
Clarify which DelayQueue methods can "see" unexpired elements |
| 6215625 |
LinkedBlockingQueue.extract throws NPE |
| 6267833 |
Incorrect method signature ExecutorService.invokeAll() |
| 5073546 |
Minor ConcurrentHashMap constructor spec tweaks |
| 5108057 |
Small Error in JavaDoc for method isEmpty of ConcurrentLinkedQueue |
| 6192476 |
CopyOnWriteArraySet.iterator should explicitly say it uses list order |
| 6233236 |
Reduce need to replace interrupted worker threads in ThreadPoolExecutor for performance |
| 6236036 |
Timeouts can cause garbage retention in lock classes |
| 6247907 |
Interruptions and ThreadPoolExecutor.runTask |
| 6264015 |
Performance improvement to Exchanger and SynchronousQueue |
| 6269146 |
Cancelled FutureTask's interrupt bit not always set |
| 6269729 |
Improve method tables in BlockingDeque and related interfaces |
| 6269739 |
BlockingQueue.drainTo needs to throw all unchecked exceptions that Collection.add does |
| 6269785 |
ConcurrentMap.replace,remove methods "equivalent" code not correct when elt not in map |
| 6281487 |
ReentrantReadWriteLock: readers repeatedly acquire lock while writer is waiting |
| 6282140 |
CopyOnWriteArrayList maintenance |
| 6294770 |
java.util.concurrent.locks.ReentrantReadWriteLock acquisition order |
| 6305337 |
Reentrant writeLock in Fair mode ReentrantReadWriteLock may block |
| 6312056 |
ConcurrentHashMap.entrySet().iterator() can return entry with never-existent value |
| 6314788 |
Tasks resubmitted to a ThreadPoolExecutor may fail to execute |
| 6315709 |
Reentrant writeLock in Fair mode ReentrantReadWriteLock may block |
| 6272521 |
ConcurrentHashMap.remove(x,null) might remove x |
| 6316155 |
LinkedBlockingQueue: q.offer(xyz) returns false positives and/or q.remove(xyz) gives up too easily |
| 6320744 |
CopyOnWriteArrayList.clone should call resetLock |
| 6318638 |
race condition in CopyOnWriteArrayList.equals |
| 6322334 |
Atomics should use Unsafe lazy field set methods |
| 6322396 |
CopyOnWriteArrayList.set(int, E) should always have volatile write semantics |
| 6322999 |
Clarify memory and atomicity guarantees of atomic field updaters |
| 6320761 |
Add more "happens-before" clarifications |
| 6324857 |
Clarify that Exchanger allows threads to "pair up" |
| 6327342 |
DelayQueue.poll(timeout, unit) can spin past given timeout |
| 6332435 |
Add regression test for CountDownLatch |
| 6330307 |
Improve CopyOnWriteArraySet, CopyOnWriteArrayList equals method |
| 6345077 |
Javadoc for ConcurrentLinkedQueue is deficient |
| 6347144 |
Exchanger maintenance |
| 6355645 |
CopyOnWriteArrayList bulk operations have race conditions |
| 6366811 |
CyclicBarrier behaviour incorrect if interruption occurs during barrier "trip" |
| 6355327 |
Concurrent collection iterators should not throw ConcurrentModificationException |
| 6363898 |
Excise vestigial "int index" field of TimeUnit |
| 6362121 |
ClassCastException in ScheduledFutureTask.compareTo |
| 6373383 |
Revert AtomicReference.compareAndSet to tiger version |
| 6383475 |
ConcurrentSkipListMap.remove(null,null) will not throw NullPointerException |
| 6384064 |
SynchronousQueue put/take interrupt handling differs from timed poll |
| 6361785 |
Spin control in Exchanger |
| 6384622 |
Exchanger.exchange(null) may hang |
| 6373953 |
Future.cancel doc "has" small grammar problem |
| 6402327 |
Clarify Condition.awaitNanos negative return value ambiguity |
| 6402333 |
LockSupport.park guidance |
| 6398290 |
Exception specifications in ScheduledThreadPoolExecutor/Executors |
| 6399443 |
ThreadPoolExecutor leak |
| 6404123 |
@link => @linkplain and other minor doc fixes |
| 6416543 |
Small improvements to regtest CancelledProducerConsumerLoops |
| 6377302 |
AbstractCollection.toArray is not safe for concurrent collections |
| 6431315 |
ThreadPoolExecutor.shutdownNow may hang ExecutorService.invokeAll |
| 6431845 |
Bug in serialization of ArrayBlockingQueue |
| 6435792 |
javadoc is wrong for ThreadPoolExecutor.setMaximumPoolSize(int) |
| 6425639 |
Clarify weakCompareAndSet doc |
| 6440728 |
ThreadPoolExecutor can fail to execute successfully submitted tasks as specified |
| 6443125 |
Clarify that ThreadFactory.newThread can return null |
| 6449110 |
Improve shutdown documentation for ExecutorService |
| 6448274 |
ThreadPoolExecutor.getTaskCount should abandon monotonicity guarantee |
| RFEs |
| 6275329 |
Add lazySet methods to atomic classes |
| 5057341 |
TimeUnit needs additional Enums for longer durations |
| 6237968 |
Add AbstractQueuedLongSynchronizer, providing support for 64 bits of synchronization state |
| 6268386 |
jsr166x -- collections and concurrency maintenance update |
| 6192552 |
Deques |
| 6207928 |
ReentrantReadWriteLock provides no way to tell if current thread holds read lock |
| 6233235 |
Add allowCoreThreadTimeOut to ThreadPoolExecutor to optionally allow core thread to use keep-alive |
| 6277663 |
Improve extensibility of thread pools |
| 6281377 |
Provide Unsafe lazy field set methods |
| 6378321 |
More methods for ReentrantReadWriteLock.WriteLock |
| Defects |
| 4929370 |
Bring JSR-166 up to date with Public Draft |
| 4934165 |
RegTest-test java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.j |
| 4939930 |
Bring JSR-166 up to date with Public Review Nov 2003 |
| 4943320 |
Regression-test java/util/concurrent/FutureTask/CancelledFutureLoops.java fails |
| 4945773 |
Regression-test java/util/concurrent/locks/ReentrantLock/CancelledLockLoops |
| 4965960 |
Bring JSR-166 up to date with Public Review Jan 2004 |
| 4992196 |
ReentrantReadWriteLock defines serializable inner classes |
| 4994250 |
Very minor JSR-166 documentation fixes |
| 4997482 |
ScheduledThreadPoolExecutor.remove(Runnable) should not throw an exception |
| 4996165 |
(spec) weakCompareAndSet has different memory effects from compareAndSet |
| 4992438 |
SynchronousQueue does not expose fairness properties |
| 4992443 |
AtomicLongFieldUpdater.CompareAndSwap locks wrong lock on old platforms |
| 5022665 |
AtomicReferenceFieldUpdater.java: "&" should be "&&" |
| 5028262 |
raw types in java.util.concurrent |
| 5030010 |
ConcurrentHashMap does not conform to JSR133 spec |
| 5031862 |
Fix TimeoutLockLoops to no longer trigger sporadic failures (see 5014723) |
| 5030012 |
ThreadPoolExecutor can fail if ThreadFactory.newThread does |
| 5032617 |
FutureTask.cancel can fail to cancel |
| 5030013 |
Misc documentation fixes from JSR-166 public review |
| 5055158 |
DelayQueue take(), poll() and poll(long delay, TimeUnit tu) are flawed |
| 5055732 |
CopyOnWriteArraySet does not define a public clone method |
| 5062327 |
Clarify checks performed by ThreadPoolExecutor.shutdown() |
| 5059659 |
Clarify the thread safety of BlockingQueue |
| 5056023 |
Some BlockingQueue inherited implementation method docs are incorrect |
| 5055213 |
Clarify that it is the collection class' iterators which implements Iterator |
| 5057608 |
java.util.concurrent.ArrayBlockingQueue doc conflict |
| 5067025 |
ConcurrentHashMap's keySet, values toArray can throw IndexOutOfBoundsException |
| 5068269 |
Miscellaneous JSR-166 documentation improvements |
| 5058273 |
java.util.concurrent.AtomicBoolean.compareAndSet doc conflict |
| 5071296 |
Clarify and fix ReentrantReadWriteLock |