多线程同机和javafx实现难点

Multithreading with a machine and javafx implementation difficulties

我需要构建一些东西,但我不知道如何构建。我希望有人能指导我走上正确的道路或告诉我如何去做。

我正在使用一台机器工作,这台机器产生了一些输出。此输出通过另一个程序读取。我正在通过我在任务中使用流程构建器创建的流程来读取此输出。此输出需要处理,并且必须更新屏幕上的多个值。它们都包含不同的消息,但消息取决于进程的输出。

(我需要从秤上读取输出,它给出了产品的重量和当前时间。产品的重量、当前时间和价格需要 substracted/calculated 来自这个并且需要在屏幕上显示)。

我不能使用观察者模式,因为那样屏幕会从另一个线程更新,这会触发错误。我也不能使用任务的 updateMessage 函数并将标签绑定到消息 属性 因为所有标签都会有不同的输出。

我做什么could/should?能否让我走上正轨?

你基本上可以这样构造它:

Thread machineReadThread = new Thread(() -> {
    boolean finished = false ;
    Process process = null ;
    InputStream in = null ;
    try {
        process = new ProcessBuilder(...).start();
        in = process.getInputStream(); 
        while (! finished) { 
            double weight = readWeightFromStream(in);
            Instant timestamp = readTimestampFromStream(in);
            Platform.runLater(() -> updateUI(weight, timestamp));
            finished = checkFinished();
        }
    } catch (Exception exc) {
        log(exc);
    } finally {
        if (in != null) in.close();
        if (process != null) process.destroy();
    }
});
machineReadThread.setDaemon(true);
machineReadThread.start();