I was thinking about this Daz. Would it be more flexible, extensible and powerful if we would just inject a singleton whenever someone request it of a ExecutorService that is configured according to the parallel-threads count?
Creating an AsyncExecAction is more code to maintain and support as opposed to letting the developers choose to just wrap an normal ExecAction into a Callable<ExecResult> and submitting it to the ExecutorService. The pro is we get closer to option #2 and #3 for a Gradle-wide parallel mechanism. The con is do we really want to expose the actual ExecutorService? I realise that we should explore this a bit more. What are your thoughts on this? --- Daniel