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 |
注意事项
- 不要在 UI 线程里执行慢 SQL、网络请求或大文件读取。
- 后台线程不能直接修改控件状态。
- 长任务要提供进度和取消能力。
- 异常要回到 UI 层提示,不要只在后台线程打印。
