0

我的数据模型层中有两个线程“并行”运行并且都计算一些值。我有一个 mvc 模式设置,所以我的数据模型有两个数组,每个数组负责从我的每个线程生成的值。如何告诉我的视图我的数组有新数据而不会阻塞主 UI?

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

4

2 回答 2

1

你将永远:

  • 扩展包含结果的数组类并覆盖add方法
  • add代码放在最后通知 UI-Thread
  • 要同步更新,您可以ExecutorService只使用一个线程,您可以使用Executors.newSingleThreadExecutor(). 在你submit()的代码中通知 UI-Thread。
  • 您的执行应该是 a 的一部分WorkerThread并在doInBackground
  • done()更新用户界面的方法中(done()在 Swing 的事件调度线程上执行)

有关线程和 Swing的更多信息,请参见此处

于 2013-10-02T08:00:08.013 回答
0

这似乎是一种相当复杂的方法。这是我的:

于 2013-10-02T08:38:02.763 回答