首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opendolphin使3000个对象与客户端保持同步

opendolphin使3000个对象与客户端保持同步
EN

Stack Overflow用户
提问于 2015-02-17 02:50:43
回答 1查看 80关注 0票数 0

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

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

另外,局域网中还有其他Javafx应用程序(客户机),它们每隔500ms从服务器数据库获取数据,并在JavaFX图形用户界面中显示它们。

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

我一直在读关于OpenDolphin的文章,但我看到的例子都是字符串同步,没有时间压力。

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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-02-17 04:43:00

这个解决方案是直接从我的一个类中提取出来的,您给了我一个想法,所以我将直接实现它;这个类是here

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

代码语言:javascript
复制
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是从database;
  • ui::update获取数据并更新图形用户界面的工具。

然后,您可以执行以下操作:

代码语言:javascript
复制
taskRunner.computeFixedDelay(db::task, ui::update, 500L, TimeUnit.MILLISECONDS);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28548332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档