Comment utiliser les pools de threads dans Java 7 pour implémenter l'exécution périodique des tâches et le traitement des résultats
Dans la programmation multithread, les pools de threads sont une technologie couramment utilisée qui peut gérer efficacement la création et la destruction des threads et améliorer les performances du programme .Performance et efficacité. Dans Java 7, le framework Executor peut facilement implémenter un pool de threads et effectuer une exécution périodique des tâches et le traitement des résultats. Cet article décrit comment utiliser les pools de threads pour implémenter ces fonctions, ainsi que des exemples de code correspondants.
En Java, vous pouvez utiliser l'interface ExecutorService pour créer et gérer un pool de threads. Le moyen le plus simple consiste à utiliser l’une des méthodes statiques de la classe Executors. Par exemple, vous pouvez utiliser la méthode Executors.newFixedThreadPool(int n) pour créer un pool de threads de taille fixe, où n représente le nombre de threads.
ExecutorService executor = Executors.newFixedThreadPool(5);
Ensuite, la tâche peut être soumise au pool de threads pour exécution. Les tâches peuvent être soumises au pool de threads à l'aide de la méthodeexecute(). Par exemple, supposons qu'il existe une classe MyTask qui implémente l'interface Runnable. Les tâches peuvent être soumises des manières suivantes :
executor.execute(new MyTask());
Si vous souhaitez que la tâche soit exécutée périodiquement, vous pouvez utiliser les exécuteurs. Méthode .newScheduledThreadPool(int n) Créer un pool de threads de planification. Où n représente le nombre de threads. Ensuite, vous pouvez utiliser la méthode planningAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) pour soumettre la tâche au pool de threads pour une exécution périodique.
ScheduledExecutorService scheduledExecutor = Executors.newScheduledThreadPool(2); scheduledExecutor.scheduleAtFixedRate(new MyTask(), initialDelay, period, TimeUnit.SECONDS);
Dans le code ci-dessus, initialDelay représente le délai (en secondes) pour la première exécution de la tâche, et period représente la période de la tâche (en secondes).
Pendant l'exécution de la tâche, le résultat de l'exécution de la tâche peut être obtenu via l'objet Future. L'objet Future représente le résultat d'une opération asynchrone et la valeur de retour peut être obtenue via la méthode get(). Après avoir exécuté la tâche, vous pouvez obtenir l'objet Future via la méthode submit().
Future<Integer> future = executor.submit(new MyTask(), 100); int result = future.get();
Dans le code ci-dessus, la méthode submit() peut accepter un objet Callable comme paramètre et renvoyer un objet Future. En appelant la méthode get(), vous pouvez obtenir le résultat de l'exécution de la tâche Callable.
Lorsque le pool de threads n'est plus nécessaire, il doit être fermé pour libérer des ressources. Vous pouvez utiliser la méthode shutdown() pour arrêter le pool de threads. Le pool de threads continuera à exécuter la tâche jusqu'à ce que la tâche soit terminée.
executor.shutdown();
De plus, vous pouvez également utiliser la méthode shutdownNow() pour arrêter le pool de threads. Cependant, cette méthode tente d'interrompre toutes les tâches en cours d'exécution et renvoie une liste des tâches non exécutées.
executor.shutdownNow();
En résumé, le framework Executor peut facilement implémenter un pool de threads et implémenter l'exécution périodique des tâches et le traitement des résultats. Dans Java 7, l'utilisation de pools de threads peut améliorer les performances et l'efficacité des programmes multithread. J'espère que cet article vous aidera à utiliser les pools de threads en Java pour implémenter l'exécution périodique des tâches et le traitement des résultats.
Source de référence :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!