Java: Принудительная остановка потоков ExecutorService

Мой код:


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);
        }

Но иногда загрузка торрента занимает неизвестное время и « awaitTermination » работает не так, как я хочу. Мне нужно немедленно остановить все выполняемые потоки через полчаса, но, как я знаю, « awaitTermination » просто использует только метод interrupt () , который работает только в циклах или в ожидании. Таким образом, в этот момент тайм-аут не работает. Итак, как это сделать?

5
задан Ravindra babu 29 April 2016 в 17:30
поделиться