我在服务器PC中有一个JavaFX独立应用程序执行以下操作:
每隔200ms从一些串行设备(rs232)获取数据,并将这些数据保存在postgresql数据库中。该数据的大小最多为2500个对象,具有15个字段(数据库中有2500行,15列)
另外,局域网中还有其他Javafx应用程序(客户机),它们每隔500ms从服务器数据库获取数据,并在JavaFX图形用户界面中显示它们。
我的问题是:我可以使用Open Dolphin在所有客户端中保持所有这些对象的同步吗?(考虑采样时间要求和数据量)。
我一直在读关于OpenDolphin的文章,但我看到的例子都是字符串同步,没有时间压力。
PD:如果不是,哪一种技术会是?
谢谢
发布于 2015-02-17 04:43:00
这个解决方案是直接从我的一个类中提取出来的,您给了我一个想法,所以我将直接实现它;这个类是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是从database;ui::update获取数据并更新图形用户界面的工具。然后,您可以执行以下操作:
taskRunner.computeFixedDelay(db::task, ui::update, 500L, TimeUnit.MILLISECONDS);https://stackoverflow.com/questions/28548332
复制相似问题