[artifactory-release] Next development version
Try to address a performance issue with recursive task pile.
Reverted to gs-collections 5.1 instead of jsr166e ConcurrentHashMapV8 to avoid any thread contention issues. Modified the logic used to allocate a recursive task to use UnifiedMap's getIfAbsentPut which seems, according to the test added to address the issue, not result in multiple notifications as was the case previously. More testing is needed to determine if this will work in all cases without any synchronization and if this fixes a potential slight decrease in throughput for multi-threaded Dispatchers.
Re-implement internal tail recursion pile as a gs-collections-based PartitionedReferencePile re-usable component.
Added a configurable RingBuffer WaitStrategy implementation that uses LockSupport.parkNanos() instead of Thread.yield()
Changes to PartitionedReferencePile to reduce object creation by letting objects hang around and leaving the responsibility of zeroing-out pooled objects to user code. It's not required by the generics but it would be best to use a Recyclable as the pile object and call .recycle() on each object within the for-each that consumes the objects queued in the pile.
Tweaks to PartitionedReferencePile to implement remove() on the Iterator for JDK 7 and add a collect() method for aggregating allocated objects from all threads into a single collection.
Force request upstream from parallel stream
merge with Master
Tweaks to dispatching