@Override
    public void run() {
        task.execute();
        for (FutureTask t : chainedTasks) {
            supplyAsync(t, executor);
        }
    }
Given a Task with list of its dependencies and execute method. Run the task such that dependencies are executed first.
You are given x number of threads. Increase parallelism as much as possible.
src/com/interview/multithreaded/DependencyTaskExecutor.java