两个队列和不同的线程

时间:2017-10-04 11:37:03

标签: java multithreading synchronization

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

1 个答案:

答案 0 :(得分:3)

通常,答案是:取决于

当然,你可以实施一些符合概述方法的东西,最终是"正确"。但是:到那里会有很难

更直接的方式:修复破碎的设计。如果两个队列中的两个条目一起有意义 - 那么创建一个包围一个A和一个B的类 - 并将这些对象放入单个队列。 / p>