@Override
    public void execute() {
        try {
            System.out.println("Starting sleep for task " + name);
            Thread.sleep(sleepTimeInMillis);
            System.out.println("Ending sleep for task " + name);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
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