Platform

Posted by 麦子 on Saturday, 2021年12月25日

原文地址: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 平台工具类";
    }

}

「真诚赞赏,手留余香」

真诚赞赏,手留余香

使用微信扫描二维码完成支付