While puzzling over why one of the demo videos on ForkJoin out there required surprisingly high sequential thresholds, I noticed that ArrayList.subList creates lists with per-access overhead proportional to the sublist depth. Which is not at all conducive to recursive use. Does anyone know any reason why this was done? (No one who I thought would know the answer does.) It is easy to keep the overhead flat (we do so in CopyOnWriteArrayList and the new jsr166e.extra ReadMostlyVector.) If no one knows a reason not to, I'll put together a patch. (I have a vague deja vu feeling that I might have done this once before years ago...)
-Doug
