Skip to content

JavaFX UI 线程

JavaFX 的 UI 更新必须在 JavaFX Application Thread 中执行。耗时任务如果直接写在按钮事件里,会导致界面卡死。

线程模型

mermaid
flowchart TD
    A["用户点击按钮"] --> B["UI 线程处理事件"]
    B --> C{"是否为耗时任务"}
    C -- 否 --> D["直接更新界面"]
    C -- 是 --> E["提交到后台线程"]
    E --> F["任务完成"]
    F --> G["使用 Platform.runLater 更新 UI"]

常见做法

场景建议
短时间 UI 操作直接在事件处理器中执行
网络请求放后台线程或异步任务
文件处理后台线程处理,进度回写 UI
更新控件使用 Platform.runLater

注意事项

  1. 不要在 UI 线程里执行慢 SQL、网络请求或大文件读取。
  2. 后台线程不能直接修改控件状态。
  3. 长任务要提供进度和取消能力。
  4. 异常要回到 UI 层提示,不要只在后台线程打印。