gpt4 book ai didi

java - 打开dolphin保持3000个对象同步到客户端

转载 作者:行者123 更新时间:2023-12-01 11:54:28 24 4
gpt4 key购买 nike

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

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

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

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

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

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

谢谢

最佳答案

这个解决方案是直接从我的一个类中提取出来的,你给了我一个想法,所以我就实现它;类(class)是 here .

根据您的问题,我打算做的是将当前存在的 ExecutorService 替换为 ScheduledExecutorService 并实现以下方法;请注意,@OnBackgroundThread@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);

关于java - 打开dolphin保持3000个对象同步到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28548332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com