Heim >Java >javaLernprogramm >Wie implementiert man Threading für Datenbankanforderungen in JavaFX ordnungsgemäß, um eine Blockierung der Benutzeroberfläche zu vermeiden?
Sie stoßen auf eine Ausnahme, weil Sie über einen separaten Thread auf die JavaFX-Benutzeroberfläche zugreifen. So können Sie Threading korrekt implementieren:
Erstellen Sie einen Thread und starten Sie die Datenbankanforderung darauf:
Thread t = new Thread(new Runnable() { public void run() { requestCourseName(); } }, "Thread A"); t.start();
Die javafx.concurrent-API bietet eine praktische Möglichkeit, Hintergrundthreads zu verwalten und zu aktualisieren Benutzeroberfläche.
// DAO encapsulates database access public class WidgetDAO { public List<Widget> getWidgetsByType(String type) { ... } } // Controller handles UI operations public class MyController { private WidgetDAO widgetAccessor; private Executor exec; public void searchWidgets() { String searchString = widgetTypeSearchField.getText(); Task<List<Widget>> widgetSearchTask = new Task<>() { @Override protected List<Widget> call() throws Exception { return widgetAccessor.getWidgetsByType(searchString); } }; widgetSearchTask.setOnSucceeded(e -> widgetTable.getItems().setAll(widgetSearchTask.getValue())); exec.execute(widgetSearchTask); } }
// DAO encapsulates database access public class MyDAO { public Course getCourseByCode(int code) { ... } } // Controller handles UI operations public class MyController { private MyDAO myDAO; private Executor exec; public void searchCourse() { int courseCode = Integer.valueOf(courseId.getText()); Task<Course> courseTask = new Task<>() { @Override protected Course call() throws Exception { return myDAO.getCourseByCode(courseCode); } }; courseTask.setOnSucceeded(e -> { Course course = courseTask.getValue(); courseCodeLbl.setText(course.getName()); }); exec.execute(courseTask); } }
Durch die korrekte Implementierung des Threadings stellen Sie sicher, dass Langfristige Datenbankanforderungen blockieren den UI-Thread nicht, was zu einer reaktionsfähigen Benutzeroberfläche führt.
Das obige ist der detaillierte Inhalt vonWie implementiert man Threading für Datenbankanforderungen in JavaFX ordnungsgemäß, um eine Blockierung der Benutzeroberfläche zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!