Attraper des exceptions de thread à partir de Java ExecutorService

Je travaille sur un framework de développement du logiciel pour le calcul parallèle JavaSeis.org. J'ai besoin d'un robuste mécanisme de signalement fil des exceptions. Au cours du développement, savoir où les exceptions sont venus de a haute valeur, donc je voudrais err sur le côté de la sur-production de rapports. Je tiens également à être en mesure de gérer Junit4 tests dans les threads. C'est l'approche ci-dessous raisonnable ou est-il un meilleur moyen ?

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class TestThreadFailure {

  public static void main(String[] args) {
    int size = 1;
    ExecutorService exec = Executors.newFixedThreadPool(size);
    ThreadFailTask worker = new ThreadFailTask();
    Future<Integer> result = exec.submit(worker);
    try {
      Integer value = result.get();
      System.out.println("Result: " + value);
    } catch (Throwable t) {
      System.out.println("Caught failure: " + t.toString());
      exec.shutdownNow();
      System.out.println("Stack Trace:");
      t.printStackTrace();
      return;
    }
    throw new RuntimeException("Did not catch failure !!");
  }

  public static class ThreadFailTask implements Callable<Integer> {
    @Override
    public Integer call() {
      int nbuf = 65536;
      double[][] buf = new double[nbuf][nbuf];
      return new Integer((int) buf[0][0]);
    }
  }
}

source d'informationauteur Chuck Mosher