JavaFX 中的並發:使用執行緒進行資料庫請求
了解JavaFX 執行緒規則
在JavaFX 中,有兩個關鍵規則控制執行緒:
- 規則1: UI操作(修改或存取場景圖元素)必須在 JavaFX 應用程式執行緒上執行。
- 規則2: 長時間運行的操作(例如資料庫要求)應在後台執行
您的程式碼和異常
您的程式碼顯示異常,因為您正在嘗試從後台執行緒(使用Runnable 建立的新Thread)修改 courseCodeLbl 標籤(UI 操作)。這違反了規則 1。
使用執行緒的正確實作
要解決此問題,您應該在後台執行緒中執行資料庫請求,然後在 JavaFX 應用程式執行緒上更新 UI。這可以透過以下步驟來實現:
- 建立一個代表資料庫操作的 Task 物件。
- 使用資料庫的適當參數初始化任務打電話。
- 執行任務 call() 方法來執行資料庫查詢並傳回結果。
- 向任務註冊一個 setOnSucceeded 處理程序,以便在任務完成時處理 UI 更新。
- 在後台執行緒上執行任務。
使用javafx.concurrent API
JavaFX 提供 javafx.concurrent API 來管理並發並處理來自後台執行緒的 UI 更新。 Task 是此 API 中的基礎類,它允許您:
- 在後台執行緒中執行程式碼並更新應用程式執行緒上的 UI 屬性。
- 使用諸如setOnSucceeded 之類的回調處理任務完成和setOnFailed.
DAO 和任務示例
.DAO 和任務範例資料存取對象(DAO) 中
類,它不知道 UI。然後,可以使用任務在後台執行緒上呼叫 DAO 的方法。
這是按類型擷取小部件的DAO 範例:以及使用Task 和
javafx.concurrent.Executor 和javafx.concurrent.Executor
執行資料庫操作並更新UI:透過封裝資料庫存取並利用 JavaFX 的並發 API,您可以在單獨的執行緒上執行資料庫請求,同時保持 UI 回應能力。以上是如何在 JavaFX 中安全地執行資料庫請求而不阻塞 UI 執行緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。