while doing a run with a profiler I noticed this:
it is creating an Arrays.ArrayList then a RandomAccessSubList,
and then addAll() is using creating an iterator and call the syncFutures.add() for each item.
a simpler for loop adding the items directly is not too ugly and it will avoid all this stuff.
I've attached a simple test to compare the two, it will not make huge difference but since we are in the core path any tiny bit probably helps.