处理GUi /内部应用程序通信的最佳方法是什么。我有许多基础线程处理数据,并希望将其输出发布到gui。
我是否应该拥有所有runnables所拥有的某种处理程序对象,然后将它们发布到它,以便它可以处理gui的输出?
答案 0 :(得分:2)
我通常使用observer pattern进行此类通信。所以基本上你的线程类实现了一个公共接口(addObserver()),使它们成为可观察对象,你的GUI控制器/视图实现了观察者接口(fireNewEvent())。如果一个线程产生了某种新内容,它会在观察者上调用一个方法。根据您的项目,要呈现的信息可以推送给观察者(例如fireNewEvent(Event e)),或者观察者可以自己访问信息( pull ) 。基本上这是你的想法加上通知多个观察者的灵活性(如果需要的话)。
答案 1 :(得分:0)
如果您在执行长任务时使用线程来避免冻结UI,SwingWorker可以帮助您。