class JobExecutor {

    public final void scheduleJob(final Job<?> job) {
        if (state != State.RUNNING) {
            throw new IllegalStateException("Cannot schedule new job on a JobExecutor that has"
                    + " been shut down.");
        }

        runningJobs.add(job);

        job.submitTasks(executorService, new Callable<Void>() {
            @Override
            public Void call() throws Exception {
                runningJobs.remove(job);
                return null;
            }
        });
    }

    public  JobExecutor();
    public  JobExecutor(final int threadCountMultiplier);

}