Rumah >Java >javaTutorial >Bagaimana untuk Melaksanakan Threading dengan Betul untuk Permintaan Pangkalan Data dalam JavaFX untuk Mengelakkan Penyekatan UI?
Anda menghadapi pengecualian kerana mengakses UI JavaFX daripada urutan yang berasingan. Begini cara anda boleh melaksanakan penjalinan dengan betul:
Buat urutan dan mulakan permintaan pangkalan data padanya:
Thread t = new Thread(new Runnable() { public void run() { requestCourseName(); } }, "Thread A"); t.start();
The javafx.concurrent API menyediakan cara yang mudah untuk mengurus urutan latar belakang dan mengemas kini UI.
// 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); } }
Dengan melaksanakan threading dengan betul, anda memastikan bahawa permintaan pangkalan data yang berjalan lama tidak menyekat urutan UI, menghasilkan antara muka pengguna yang responsif.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Threading dengan Betul untuk Permintaan Pangkalan Data dalam JavaFX untuk Mengelakkan Penyekatan UI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!