首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JavaFX工作线程和PropertyChangeSupport的争用条件

使用JavaFX工作线程和PropertyChangeSupport的争用条件
EN

Stack Overflow用户
提问于 2013-09-13 21:20:19
回答 1查看 459关注 0票数 0

我正在开发一个在JavaFX任务中使用多个工作线程的系统。任务内部这些线程上的可调用对象使用PropertyChangeSupport将某些状态更改信息传递回侦听器(例如中间结果)。我正在使用PropertyChangeListeners来监视这些更改,并从这些更改中创建其他对象访问的派生对象。任务完成后,我将使用JavaFX来显示信息,其中一些信息是从发出的PropertyChange事件中收集的。

我的问题是:在任务完成和PropertyChangeEvents被处理之间是否存在竞争条件(我假设在JavaFX应用程序线程上会发生这种情况,但不完全确定)。

作为一个具体的例子,考虑一个正在分割成块的图像,以便在多个步骤中进行处理。在每个步骤中,生成一个中间映像,并为该中间映像触发一个propertyChange事件。在处理结束时,我希望能够在JavaFX场景中显示最终图像以及同时生成的所有图像。在FX线程重新绘制/刷新之前,所有的propertyChange事件都会被处理吗?

我意识到JavaFX文档有一个示例,Task文档讨论返回中间结果(JavaFX任务API文档)。该示例使用JavaFX可观察的*对象。我认为PropertyChangeEvents将运行在与FX可观察对象类似的线程上,因此在完成非FX线程和在FX线程上获得结果之间不应该存在竞争条件,但我想看看是否有我可能没有想到的东西。

提前感谢您的任何讨论或想法。

  • 钩子
EN

回答 1

Stack Overflow用户

发布于 2014-05-20 07:14:41

正确的是,PropertyChangeEvents将运行在与FX可观察对象相同的线程上。然而,这是一个不同于任务本身的线程。

但是,您无法保证在FX线程重新绘制/刷新之前处理所有的propertyChange事件。事实上,显示器的各个部分可以在不同的propertyChange事件之间被多次重新绘制,这取决于它们所用的时间和所涉及的特定时间。另外,其他的FX事件也可以分散在propertyChange事件和重新绘制之间。但是,应该保证由任何给定的propertyChange事件更新的任何UI元素最终都会在更新后的某个时候重新绘制。因此,显示最终将“赶上”propertyChange处理程序所做的任何更改,并最终重新绘制任何已更改的区域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18795439

复制
相关文章

相似问题

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