【问题标题】:Two queues and different threads两个队列和不同的线程
【发布时间】:2017-10-04 11:37:02
【问题描述】:

我有 2 个队列 A 和 B。主线程负责填充队列。有一个由 3 个线程组成的线程池负责从队列中读取。两个队列都是 ArrayBlockingQueue。 假设主线程以这种方式填充队列(A1,B1),(A2,B2),(A3,B3),(A4,B4)等等。 A1 和 B1 共同构成一个完整的数据。 任何线程是否有可能在任何时候读取(A3,B4)之类的数据。如果是,那么我该如何避免它。我希望每个线程都能完全读取数据。 例如 thread1 应该同时读取 (A1,B1) 和 thread2 (A2,B2) 等等。

【问题讨论】:

  • 为什么不把数据放到另一个对象里,只有一个队列呢?

标签: java multithreading synchronization


【解决方案1】:

通常,答案是:取决于

当然,您可以实现一些遵循概述的方法并且最终是“正确的”的东西。但是:到达那里将是困难

更直接的方法:修复损坏的设计。如果两个队列中的两个条目一起有意义 - 然后创建一个包含一个 A 和一个 B 的类 - 并将这些对象放入一个单个队列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2010-10-28
    • 2011-09-27
    • 1970-01-01
    相关资源
    最近更新 更多