public <T> ForkJoinTask<T> submit(ForkJoinTask<T> task) {
        if (task == null)
            throw new NullPointerException();
        externalPush(task);
        return task;
    }
public <T> ForkJoinTask<T> submit(ForkJoinTask<T> task) {
        if (task == null)
            throw new NullPointerException();
        externalPush(task);
        return task;
    }
public < T > ForkJoinTask < T > submit ( ForkJoinTask < T > task ) { if ( task == null ) throw new NullPointerException ( ) ; externalPush ( task ) ; return task ; }
Submits a ForkJoinTask for execution.

@param task the task to submit
@param <T> the type of the task's result
@return the task
@throws NullPointerException if the task is null
@throws RejectedExecutionException if the task cannot be
scheduled for execution
Submits a ForkJoinTask for execution .