我有一个单独的线程,该线程需要在JavaFX线程中同时请求一些可能会更改的数据。我想在这个单独的线程中执行阻塞调用,以确保该请求进入JavaFX线程。
Swing-GUI测试框架AssertJ为此目的提供了易于使用的API:
List list = GuiActionRunner.execute(new GuiQuery<...>...);
该调用将阻止当前线程,在事件调度线程中执行传递的代码,并返回所需的数据。
如何在JavaFX应用程序的生产代码中实现这一点?对于此要求,推荐的方法是什么?
好吧,我想我现在明白了。您需要自己实现这样的事情:
AtomicReference<List<?>> r = new AtomicReference<>();
CountDownLatch l = new CountDownLatch(1);
Platform.runLater( () -> {
// access data
r.set(...)
l.countDown();
})
l.await();
System.err.println(r.get());
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句