使用线程通过 JavaFX 发出数据库请求
JavaFX 规定了关于线程的两个基本规则:
遇到异常
您遇到的异常源于尝试更新来自 JavaFX 应用程序之外的线程的 UI (courseCodeLbl.setText(...))
正确实现线程
要确保数据库请求在单独的线程中执行,请按照以下步骤操作:
使用 JavaFX.concurrent 实现线程
JavaFX 提供了专门用于管理后台线程和更新UI。
示例实现
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);
在此示例中,数据库访问是在任务中执行的,UI 更新安排在任务上使用 setOnSucceeded 处理程序的 JavaFX 应用程序线程。通过遵循这些准则,您可以有效地使用线程来优化数据库请求,同时保持 JavaFX 应用程序中的 UI 响应能力。
以上是如何从后台数据库线程安全更新 JavaFX UI?的详细内容。更多信息请关注PHP中文网其他相关文章!