if (ntasks == 0) {
throw new IllegalArgumentException();
}
List<Future<T>> futures= new ArrayList<Future<T>>(ntasks);
ManagedTaskListenerSupport listenerSupport = getManagedTaskListenerSupport(listener);
ManagedContext managedContext = getManagedContext();
ManagedExecutorCompletionService<T> ecs =
new ManagedExecutorCompletionService<T>(this, managedContext, listenerSupport);
// For efficiency, especially in executors with limited
// parallelism, check to see if previously submitted tasks are