Java: la Force de l'arrêt de ExecutorService fils

Mon code:


String[] torrentFiles = new File("/root/torrents/").list();

        if(torrentFiles.length == 0 || torrentFiles == null)
        {
            System.exit(0);
        }

        ex = Executors.newFixedThreadPool(3);

        for(String torrentFile : torrentFiles)
        {
            ex.submit(new DownloadTorrent("/root/torrents/" + torrentFile));
        }

        ex.shutdown();

        try
        {
            ex.awaitTermination(30, TimeUnit.MINUTES);
        }
        catch(InterruptedException ex1)
        {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex1);
        }

Mais parfois torrent téléchargement prend du temps inconnu de la valeur et de la «awaitTermination» ne fonctionne comme je veux. J'ai besoin d'arrêter tous les threads exécutés immédiatement après une demi-heure, mais comme je sais «awaitTermination» uniquement utiliser interrupt() méthode qui ne fonctionne que dans des boucles ou en attente. Donc, délai d'attente fonctionne pas si ce moment arrive. Alors, comment?

OriginalL'auteur Clark | 2011-05-10