原文地址:https://www.bilibili.com/read/cv2569124?spm_id_from=333.999.0.0
简介
用于小量的队列的更新UI操作,只是他是以另外一条线程来处理的。但是新开的这一条线程还是UI线程。
同步java与javaFX线程
JavaFX是单线程编程,所有对界面的操作都会交给唯一的线程Application Thread去处理。因此需要使用线程同步技术来避免异常。在实际应用中,我们房间是在开始游戏之前创建的,而游戏开始后又要处理传来的倒计时,图像,答案,聊天等数据并显示。这就需要java与javaFX线程的同步。
代码
package com.maizi.javafxdemo.platform;
import com.maizi.javafxdemo.base.MyFx;
import javafx.application.ConditionalFeature;
import javafx.application.Platform;
import javafx.stage.Stage;
public class FX_Platform extends MyFx {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Platform.setImplicitExit(true); // false的时候, 我们这个程序窗口关闭了, 但是程序还在后面运行。
boolean supported = Platform.isSupported(ConditionalFeature.GRAPHICS);
System.out.println("是否支持: " + supported);
super.start(primaryStage);
System.out.println("UI线程: " + Thread.currentThread().getName());
Platform.runLater(new Runnable() {
@Override
public void run() {
// 这线程也是UI线程,相当一个队列一样, 可以等显示后,然后在更新里面的一些UI组件。
// 大量的进行UI更新会卡主,他是进行队列进行任务操作的。
// 多任务,简单实用,不担大任
System.out.println("run方法里面的线程名称:" + Thread.currentThread().getName() + ", 可以在里面进行更新UI组件");
}
});
System.out.println("UI线程" + Thread.currentThread().getName());
}
@Override
public String studentByTitle() {
return "platform 平台工具类";
}
}
「真诚赞赏,手留余香」