Exécuteurs Java : notifications d'achèvement de tâches asynchrones
Les opérations de blocage peuvent entraver les performances des applications Java, en particulier lors de la gestion de nombreuses tâches simultanées. Pour éviter le blocage, une approche non bloquante est nécessaire pour avertir le thread principal lorsqu'une tâche est terminée.
Considérez un scénario dans lequel plusieurs files d'attente de tâches doivent être traitées, une à la fois. Une solution simple consisterait à bloquer jusqu'à la fin de chaque tâche, consommant ainsi des ressources système.
Pour surmonter ce problème, un mécanisme de rappel peut être mis en œuvre. Définissez une interface pour gérer les notifications d'achèvement de tâche et transmettez cette interface comme argument à la tâche à soumettre. La tâche invoquera ensuite la méthode de rappel une fois terminée.
Alternativement, Java 8 fournit une solution plus complète avec CompletableFuture. Cette classe permet la création de pipelines asynchrones, dans lesquels plusieurs processus peuvent être composés et conditionnés une fois terminés.
Voici un exemple utilisant CompletableFuture :
import java.util.concurrent.CompletableFuture; public class TaskCompletionNotification { public static void main(String[] args) { CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { // Perform task return "Task result"; }); future.thenAccept(result -> System.out.println("Task completed with result: " + result)); // Main thread continues to run without blocking } }
Cette approche élimine le blocage et autorise le thread principal pour continuer l'exécution pendant que la tâche se termine en arrière-plan. Une fois la tâche terminée, le consommateur fourni est invoqué avec le résultat de l'opération.
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!