Utiliser des threads pour effectuer des requêtes de base de données
JavaFX fournit une API de concurrence spécialement conçue pour exécuter du code dans un thread en arrière-plan, avec une API spécialement conçue pour mise à jour de l'interface utilisateur JavaFX à la fin (ou pendant) l'exécution de ce code. La classe clé dans javafx.concurrent est Task, qui représente une unité de travail unique et unique destinée à être effectuée sur un thread d'arrière-plan. Cette classe définit une seule méthode abstraite, call(), qui ne prend aucun paramètre, renvoie un résultat et peut lever des exceptions vérifiées. Pour implémenter correctement le threading pour les requêtes de base de données, l'opération de longue durée (accès à la base de données) doit être effectuée dans un thread d'arrière-plan, renvoyant les résultats de l'opération une fois celle-ci terminée, puis planifier une mise à jour de l'interface utilisateur sur l'interface utilisateur (Application FX ) thread utilisant Platform.runLater(Runnable r) pour exécuter r.run() sur le thread d'application FX.
Bonnes pratiques générales pour Multithreading
À l'aide de l'API javafx.concurrent
Par exemple :
final int courseCode = Integer.valueOf(courseId.getText()); Task<Course> courseTask = new Task<Course>() { @Override public Course call() throws Exception { return myDAO.getCourseByCode(courseCode); } }; courseTask.setOnSucceeded(e -> { Course course = courseTask.getCourse(); if (course != null) { courseCodeLbl.setText(course.getName()); } }); exec.execute(courseTask);
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!