在主執行緒中執行資料庫請求等繁重操作可能會凍結 GUI。多執行緒允許您非同步執行此類操作。讓我們來探索如何在 JavaFX 中使用 Thread 和 Runnable 類別。
在您的程式碼中,嘗試更新 courseCodeLbl UI 時遇到 IllegalStateException來自使用 Thread 建立的後台執行緒的元素。這違反了一個關鍵的 JavaFX 規則:必須在 JavaFX 應用程式執行緒上對場景圖中的節點進行修改。
1。使用 Thread 和 Runnable 類別:
您可以透過實作 Runnable 介面在單獨的執行緒中執行任務。 Runnable物件的run方法包含要執行的程式碼。
Thread t = new Thread(new Runnable() { @Override public void run() { // Perform database request here } });
2.在run 中呼叫不同的方法:
您可以透過建立類別的實例並呼叫其方法來在run 方法中呼叫不同的方法。
MyClass myClass = new MyClass(); Thread t = new Thread(new Runnable() { @Override public void run() { myClass.method1(); myClass.method2(); } });
JavaFX 為多執行緒提供了 javafx.concurrent API,專為處理 UI 應用程式而設計。它提供:
- 任務類別:
代表一次性後台任務,可以回傳結果或引發異常。
- 回呼:
setOnSucceeded 和 setOnFailed 等方便的方法可以自動呼叫 FX 上的處理程序應用程式執行緒。
使用 JavaFX 並發 API:
Task<Course> task = new Task<>() { @Override public Course call() { return myDAO.getCourseByCode(courseId); } }; task.setOnSucceeded(e -> { Course course = task.getValue(); courseCodeLbl.setText(course.getName()); }); exec.execute(task);
透過利用線程,您可以非同步執行資料庫請求,從而保持 JavaFX UI 的回應能力。請記住遵守JavaFX規則,以避免異常並確保順利運行。
以上是Java 多執行緒如何提高資料庫請求效能並防止 JavaFX 應用程式中的 UI 凍結?的詳細內容。更多資訊請關注PHP中文網其他相關文章!