Java - 是否可以以这种方式使用观察者模式和线程?

标签 java multithreading user-interface javafx observer-pattern

希望有人能帮忙。我只是想了解观察者设计模式、线程以及如何将两者用于我正在做的项目。

我目前需要在我使用 Java FX 构建的媒体播放器上实现这两个功能。

我需要使用它们来更新我的 listView(由目录中文件的 getNames 函数填充。我需要对歌曲文件夹进行任何更改以立即反射(reflect)在 GUI 上。

是否有可能,有一个正在运行的线程不断调用我的 getNames 函数(返回一个 items 变量),并且如果 items 变量有任何更改,那么我可以使用观察者模式来通知我的 GUI 类更新其列表.

我知道有可能有一个线程不断地调用该函数,但我只需要一些关于是否可以使用观察者模式来通知项目是否已更改的建议!

我没有代码可以展示,因为我仍在尝试找出如何实现它。

有什么想法吗?

非常感谢任何建议!谢谢:)

更新

经过相当长的一段时间后,终于可以使用线程和观察者模式了。不需要 WatchService。使用我的线程不断调用检查更改方法,然后如果方法返回,则观察者启动以更新 GUI。

最佳答案

可以使用此模式,您需要运行一个线程来监视文件夹中的文件更新,并使用 eventQueue 来运行线程以确保该线程安全 例如 java.awt.EventQueue.invokeLater 或 invokeAndWait

一旦线程检测到变化,你的观察者模式就会更新 GUI

希望这有帮助!!

关于Java - 是否可以以这种方式使用观察者模式和线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46720095/

相关文章:

java - 在小程序查看器中调用时出现空白屏幕

java - 如何优化此算法,该算法着重于寻找最短的平衡子串?

ruby - LoadError : Expected {app_path}/models/model file. rb 定义模型名称

linux - 为什么线程之间是IPC-Mechanism?

java - swt 标签顶部有额外空间(边框内)

java - 单击添加 GUI 元素仅有效一次

java - 如何在没有数据库的情况下管理 java 中的序列?

java - 想要返回数据到前端,而不是 View - Spring Framework

java - 进度监视器(不确定)显示后端执行情况

java - 在服务器停止之前 GUI 不会启动