Java - 如何同步 1 个列表上的 2 个线程?

标签 java multithreading synchronization

如何同步 2 个线程来处理列表中的数据?

  • 线程 A 正在添加/更改列表中的项目(写入列表)
  • 线程 B 正在显示项目(仅读取列表)

我想在它可以显示列表时“通知”线程 B。在读取列表时,线程 A 不得更改它。当线程 B 完成读取后,线程 A 可以再次开始更改列表。

我的猜测是

  • 同步(obj)
  • list.wait() + list.notify()

线程没有相互调用。它们始终并发运行。

最佳答案

您可以将所有更改放在 Runnables 中,并将它们放入线程 A 按顺序执行的队列中。在每个作业之后,A 必须生成修改列表的快照并将其提交给线程 B。您可以为此使用执行器。

关于Java - 如何同步 1 个列表上的 2 个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16295703/

相关文章:

java - 无法使用相对路径从资源文件夹获取 JSON 文件

java - 长时间运行的线程实现有问题

java - 理解同步和实现队列

c++ - C++ 对 int 的读写是原子的吗?

java - 在java中创建只能在某些安全点被杀死的守护进程 'like'线程?

java - 控制对 Java 集合的并发访问的最佳方法

c++ - 重用线程 - C++

java - 多线程环境中的所有静态方法和私有(private)构造函数模式

c++ - 关键部分内的 InterlockedExchange(或类似的原子操作)?

java - 知识共享 - Selenium - 当您在 TestNG 中使用监听器进行数百个测试时,对失败的测试进行屏幕截图