我正在开发一个基于 SWING 的多线程 Java 应用程序。
想法是创建一组后台“任务/服务”来重复执行一些任务。
我的问题是如何通过在某些条件下显示 SWING 组件来实现可以与 GUI 交互的多线程(在应用程序的较低级别)。
我知道我可以使用 SwingWorker,但使用它会使我的应用程序变得更加“面向图形用户界面”,我不想这样做,但另一方面我也不想让我的多线程类依赖于图形用户界面类。
有哪些选项在哪里?
提前谢谢你。
编辑
我忘了说这个后台任务需要一开始就启动,不能通过 GUI 启动(就像引导进程)。
最佳答案
but in the other hand I also don't want to make my multithreading classes depended on GUI classes.
使用 Observer/Listener 模式怎么样?您的后台任务由 SwingWorker
启动,可以在需要时通知其他一些组件。 @Xeon 评论为您指明了正确的方向。
个人建议:从一些解决方案开始,然后在代码变得不那么可读时不断重构。
顺便说一句。我希望您记住旧规则:Swing 组件应该只在事件调度线程上访问
;)
关于Java 多线程和 SWING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32268852/