L'avenir.get() est interrompu toujours avec une InterruptedException

J'ai un problème BIZARRE avec l'Avenir.get() en Java. Il retourne toujours avec une InterruptedException, cependant la chose étrange est que la cause de l'Exception est nulle, donc je ne peux pas dire qui m'a interrompu..

C'est même encore pire car je vérifier avant l'appel de get(), et l'emploi d'Avenir a à faire est déjà fait.

Voici le code responsable de la sortie ci-dessous. f est l'Avenir, et le callable retourne une table de hachage où l'Agent n'est pas vraiment pertinent. Désolé si il y a trop d'printlines, j'essaie juste de donner de la bouillie d'info que je peux. L'appel de méthode à partir de appelable est pour l'instant un simple System.out.println("Hola soy agente") qui comme vous le verrez, est imprimé, ce qui signifie que le callable ne suis pas la cause de l'exception, soit

Voici le code:

try
    {
        System.out.println(f.isDone());        //true
        System.out.println(f.isCancelled());   //false
        System.out.println(f.toString());      //FutureTask
        newModdedAgents.putAll(f.get());
    }catch(InterruptedException e)
    {
        System.out.println(f.isDone());        //true
        System.out.println(f.isCancelled());   //false
        System.err.println(e);                 //It is an interruptedException
        System.err.println(e.getCause());     //???? null?
        e.printStackTrace();
    }

Et la sortie

 Hola soy agente
 true
 false
 java.util.concurrent.FutureTask@1c4c94e5
 true
 false
 java.lang.InterruptedException
 null

java.lang.InterruptedException
at     java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1302)
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:248)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at com.pf.simulator.Simulation.simulateStep(Simulation.java:217)
at com.pf.gui.ButtonPanel.doWork(ButtonPanel.java:141)
at com.pf.gui.ButtonPanel$1$1.construct(ButtonPanel.java:198)
at com.pf.gui.SwingWorker$2.run(SwingWorker.java:117)
at java.lang.Thread.run(Thread.java:636)

Dans le cas où vous souhaitez voir où j'en faites la appelable pour le pool de threads... alors ce serait le code pour qu'il

    for(Callable<HashMap<Integer, Agent>> c : agentCallables)
    {
        Future<HashMap<Integer,Agent>> future = pool.submit(c);
        agentFutureSet.add(future);
    }

et ensuite j'ai effectuer une itération sur ce Jeu avec

    for(Future<HashMap<Integer, Agent>> f : agentFutureSet)
    try
    {
              //Here goes the code at the beginning

OriginalL'auteur dgrandes | 2010-11-24