从并行线程更新视图结果

时间:2013-10-02 07:24:26

标签: java multithreading

我的数据模型层中有两个线程以“并行”方式运行,并且都计算一些值。我有一个mvc模式设置,所以我的数据模型有两个数组,每个数组负责从我的每个线程生成的值。我如何告诉我的观点,我的数组在主UI上没有阻塞的情况下有新数据?

我的线程在一个定时器上运行x秒并且每个都生成一个整数。这些中的每一个都需要添加到一个数组中,并且在添加时,视图应该通过观​​察者模式获得通知,以根据两个数组的更新值更新屏幕。这应该发生,而不会阻止主ui线程。所以我真的不能为while(true)或为每个线程设置futureValue,因为这会让我的ui等到线程完成。我该怎么办?

2 个答案:

答案 0 :(得分:1)

你将永远:

  • 扩展包含结果的数组类并覆盖add方法
  • 在代码末尾放入add以通知UI-Thread
  • 要同步更新,您可以使用只有一个线程的ExecutorServiceExecutors.newSingleThreadExecutor()。在那里你submit()通知UI-Thread的代码。
  • 您的执行应该是WorkerThread的一部分,并在doInBackground
  • 中处理
  • done()方法中更新用户界面(done()在Swing的事件派发线程上执行)

有关Threads and Swing

的更多信息,请参见此处

答案 1 :(得分:0)

这似乎是一种非常复杂的方法。这是我的: