同步访问同一资源的两个线程

时间:2015-01-16 02:27:45

标签: java multithreading

我有一个类似于Web浏览器的应用程序。用户将其指向页面,并显示该页面的内容。如果用户没有做任何事情,它也会定期刷新。

由于用户可以随时切换页面,因此应用程序最多可以同时拥有3个线程:

  1. UI线程
  2. 线程 A ,定期运行,获取有关当前页面的信息,然后更新应用
  3. 线程 B ,在用户切换页面时运行,获取有关下一页的信息,然后更新应用
  4. 如您所见,如果在切换时发生定期更新,则应用程序的数据模型可以在任何时候从 A B 更新正在处理。更新不是原子的(设置了一堆字段),因此这会导致有关下一页和当前页的信息混淆,并且应用程序的状态总体上会变得不一致。

    我如何才能最好地同步这些更新?一些额外的细节:

    • 我使用的是Executor框架,我不确定如何跨线程进行通信,加入,同步等等。
    • 我已经尝试在 B 启动之前停止 A ,然后在 B 完成后使用executor.shutdown(); executor.awaitTermination(1, TimeUnit.DAYS)重新启动它它似乎没有用。

0 个答案:

没有答案