0

我在服务器 PC 中有一个 JavaFX 独立应用程序,执行以下操作:

每 200 毫秒从一些串行设备 (rs232) 获取数据,并将该数据保存在 postgresql 数据库中。数据的大小最多为 2500 个对象,15 个字段(数据库中 2500 行,15 列)

此外,我在局域网中还有其他 Javafx 应用程序(客户端),它们每 500 毫秒从服务器数据库中获取数据,并在 JavaFX GUI 中显示它们。

我的问题是:我可以使用 Open Dolphin 来保持所有客户端中的所有对象同步吗?(考虑到采样时间要求和数据量)。

我一直在阅读有关 OpenDolphin 的信息,但我看到的示例是字符串同步,没有时间压力。

PD:如果不是,那会是哪一种技术?

谢谢

4

1 回答 1

1

这个方案是直接从我的一个类中提炼出来的,你给了我一个思路,我就实现一下;上课在这里

根据您的问题,我打算做的是将ExecutorService当前存在的 a 替换为 aScheduledExecutorService并实施以下方法;请注意,@OnBackgroundThreadand@OnUiThread是我使用的“只是”常规@Documented注释:

public <T> void computeFixedDelay(
    @OnBackgroundThread final Supplier<? extends T> supplier,
    @OnUiThread final Consumer<? super T> consumer,
    final long quantity, final TimeUnit unit)
{
    backgroundExecutor.scheduleWithFixedDelay(() -> {
        final T value = supplier.get();
        frontendExecutor.execute(() -> consumer.accept(t));
    }, 0L, quantity, unit);
}

随意复制任务并实施建议,然后添加此方法。然后,您将能够通过初始化此类的一个实例(Platform::runLater作为第二个参数传递)在您的 JavaFX 客户端中执行此操作。

下面假设:

  • db::task是什么从数据库中获取数据;
  • ui::update获取该数据并更新 GUI。

然后你可以这样做:

taskRunner.computeFixedDelay(db::task, ui::update, 500L, TimeUnit.MILLISECONDS);
于 2015-02-16T20:42:59.547 回答