ao-concurrent-4.0.5
Release Notes
- Accepting negative task submit delay, convert to zero.
- Logging timer task errors instead of propagating and killing timer.
- Clearing thread interrupted state before returning to timer.
- Set a distinct timer thread name.
- Executors implements a toString with a unique ID (with possible 64-bit overflow duplication) to help debugging.
- Executors close thread is named to help debugging.
- Fixed bug where all futures from all executors were canceled when any executor was closed.
ao-concurrent-4.0.4
Release Notes
- Improved Java Applet / Web Start compatibility:
- Reduced expected
SecurityException
logging from WARNING to FINE.
- Reduced expected
ao-concurrent-4.0.3
Release Notes
-
Fixed race condition in
ConcurrencyReducer
andKeyedConcurrencyReducer
where a new thread coming in when a result is already finished is never notified and deadlocks the reducer. This is done by returning early when the result is finished, instead of entering the wait/notify code path.
ao-concurrent-4.0.2
Release Notes
- Now properly restoring Thread interrupted state on
InterruptedException
.
ao-concurrent-4.0.1
Release Notes
notify()
replaced withnotifyAll()
since more than one thread can be waiting onFuture.get()
.
ao-concurrent-4.0.0
Release Notes
- Now supports Java 9+ modules with included
module-info.class
. - Maven artifact relocated from
com.aoindustries:ao-concurrent
tocom.aoapps:ao-concurrent
. - Package renamed from
com.aoindustries.concurrent
tocom.aoapps.concurrent
.
ao-concurrent-3.1.0
Release Notes
ConcurrencyLimiter
divided into two implementations:KeyedConcurrencyReducer
(when limiting by key) andConcurrencyReducer
when is a single reduction.-
On
ThreadDeath
the first thread still gets the actualThreadDeath
, while all waiting threads now getExecutionException
. Previously, on thread death waiting threads were never notified.
ao-concurrent-3.0.0
Release Notes
-
Converted from
Disposable
(deprecated) toAutoCloseable
, which supports try-with-resources in Java 1.7+.
ao-concurrent-2.0.1
Release Notes
-
The sequential executor is no longer substituted in place of the per-processor
executor on single-CPU systems. This is because the sequential executor and
per-processor executor have different behavior when
Future.get(…)
is never called. WhenFuture.get(…)
is never called, the sequential executor does not execute the task while the per-processor will still execute it in the background.
ao-concurrent-2.0.0
Release Notes
- Minimum Java version changed from 1.7 to 1.8.
-
Reduced use of property substitutions in
pom.xml
. This is to help 3rd-party parsers that fail to perform full Maven-compatible substitutions. -
Renamed package from
com.aoindustries.util.concurrent
tocom.aoindustries.concurrent
. Resolves split-package with AO Lang.
ao-concurrent-1.1.2
Release Notes
Using
;-split-package:=first
of maven-bundle-plugin to avoid bundling the classes in the split-packagecom.aoindustries.util.concurrent
from AO Lang.This split-package is transitional. In the future we will have more fine-grained
*-i18n
projects.
ao-concurrent-1.1.1
Release Notes
- Using managed dependencies:
- This project uses managed dependencies.
- This project's managed dependencies may also be imported by other projects.
ao-concurrent-1.1.0
Release Notes
- Minimum Java version changed from 1.6 to 1.7.
ao-concurrent-1.0.3
Release Notes
- Updated dependencies.
ao-concurrent-1.0.2
Release Notes
- New AO OSS Parent POM to simplify
pom.xml
files. - Project documentation moved to per-project book in SemanticCMS format.
- Added changelog as top-level project link.
ao-concurrent-1.0.1
Release Notes
- Accepting less specific generic bounds.
- Improved Javadoc formatting.
- Improved README formatting.
ao-concurrent-1.0.0
Release Notes
- Project moved to GitHub and Maven.
- Added multiple per-processor thread pools to avoid possible deadlock while also avoiding blowing-out to unbounded concurrency.
- Now automatically maintains some ThreadLocal values between caller and executor during concurrent processing, and provides wrapper hook for subclasses to extend.
- Cleaned-up executors API.
- Providing access to preferred concurrency.
- Added a sequential executor for when non-threaded execution is desired.
- Each lock object now a small empty class to help identify lock contention.
The lock contention profiler in NetBeans is just showing "java.lang.Object" all over, and can't seem to get from the lock object id to the actual object in the heap dump using OQL (id not found).
- Reduced lock contention significantly through atomic operations and fine-grained locking.