Utilisation de Java 8Terminate autres tâches futures en cours d'exécution lorsque la condition est remplie dans l'un pour l'avenir des tâches
Je suis en train d'écrire un prog pour télécharger les fichiers journaux de serveurs diff et la recherche d'un texte donné dans ces fichiers journaux . Je fais est synchrone en ce moment. Je veux le faire en parallèle et a découvert que cela peut être fait en utilisant Future dans Java. J'utilise apache.commons.io pour télécharger le fichier depuis l'URL. Voici l'extrait de code:
ExecutorService executorService = Executors.newCachedThreadPool();
List<Future<XCluster>> clusterFutures = new ArrayList<>();
for(XCluster cluster: clusters) {
clusterFutures.add(executorService.submit(() -> {
return downloadAndSearch(textToSearch, cluster);
}));
}
//For now I'm not doing anything with returned value from Future
Mais maintenant, je veux mettre fin à une autre opération de téléchargement de recherche a commencé dans l'avenir que la recherche donnée devrait être trouvée que dans l'un des serveurs. Il n'est donc pas nécessaire de poursuivre les autres tâches futures que j'ai commencées. quelqu'un peut-il suggérer un moyen de le faire? J'utilise java 8, d'autres options sont également les bienvenues. Merci d'avance!
merci, encore un point cependant. Y at-il un moyen d'avoir un bloc de code comme finalement qui sera exécuté quand j'arrêterai d'autres threads. J'ai besoin de nettoyer les fichiers téléchargés par d'autres futurs. – user3539951