AO Concurrent Changelog


Snapshot Notes

  • Now properly restoring Thread interrupted state on InterruptedException.


Release Notes

  • notify() replaced with notifyAll() since more than one thread can be waiting on Future.get().


Release Notes

  • Now supports Java 9+ modules with included module-info.class.
  • Maven artifact relocated from com.aoindustries:ao-concurrent to com.aoapps:ao-concurrent.
  • Package renamed from com.aoindustries.concurrent to com.aoapps.concurrent.


Release Notes

  • ConcurrencyLimiter divided into two implementations: KeyedConcurrencyReducer (when limiting by key) and ConcurrencyReducer when is a single reduction.
  • On ThreadDeath the first thread still gets the actual ThreadDeath, while all waiting threads now get ExecutionException. Previously, on thread death waiting threads were never notified.


Release Notes

  • Converted from Disposable (deprecated) to AutoCloseable, which supports try-with-resources in Java 1.7+.


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. When Future.get(…) is never called, the sequential executor does not execute the task while the per-processor will still execute it in the background.


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 to com.aoindustries.concurrent. Resolves split-package with AO Lang.


Release Notes

  • Using ;-split-package:=first of maven-bundle-plugin to avoid bundling the classes in the split-package com.aoindustries.util.concurrent from AO Lang.

    This split-package is transitional. In the future we will have more fine-grained *-i18n projects.


Release Notes

  • Using managed dependencies:
    1. This project uses managed dependencies.
    2. This project's managed dependencies may also be imported by other projects.


Release Notes

  • Minimum Java version changed from 1.6 to 1.7.


Release Notes

  • Updated dependencies.


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.


Release Notes

  • Accepting less specific generic bounds.
  • Improved Javadoc formatting.
  • Improved README formatting.


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.