runners[i] = new JobRunner(jobs[i]);
initializers[i] = new JobInitializer(jobs[i]); Thread t = new Thread(initializers[i]); initializers[i].thread = t; t.start(); }  for (int i = 0; i < jobs.length; i++) { try { initializers[i].thread.join(); } catch (InterruptedException e) {}  if (initializers[i].exception != null) { throw initializers[i].exception; } }    JobExecutor[] runners = new JobExecutor[jobs.length]; for (int i = 0; i < jobs.length; i++) { runners[i] = new JobExecutor(jobs[i]);
   protected JobResult[] runJobs(Job[] jobs)   {            JobRunner[] runners = new JobRunner[jobs.length];      for (int i = 0; i < jobs.length; i++)      {         runners[i] = new JobRunner(jobs[i]);         Thread t = new Thread(runners[i]);         runners[i].thread = t;         t.start();      }            for (int i = 0; i < jobs.length; i++)      {         try         {            runners[i].thread.join();         }         catch (InterruptedException e)         {}      }       JobResult[] results = new JobResult[jobs.length];      for (int i = 0; i < jobs.length; i++)      {         results[i] = runners[i].result;      }      return results;         }