0

我对 Java 线程有疑问。我必须分别运行两个线程以定义数量的步骤,然后我必须让它们通信。线程 1 必须读取线程 2 拥有和修改的 ArrayList,线程 2 也是如此。同步它们的更好方法是什么?我可以将 thread1 的 arrayList 用于线程 2,还是必须定义不同的共享区域?

谢谢大家。

4

2 回答 2

4

使用专用同步器比锁定其中一个要干净得多ArrayList
我建议使用CyclicBarrier. 引用 JavaDoc:

一种同步辅助工具,它允许一组线程相互等待以达到共同的障碍点。CyclicBarriers 在涉及固定大小的线程组的程序中很有用,这些线程组必须偶尔相互等待。屏障被称为循环的,因为它可以在等待线程被释放后重新使用。

于 2013-05-30T19:11:34.433 回答
0

由于情况是对称的,因此您不应选择一个 ArrayList 而不是另一个。使用附加对象。Exchanger看起来是最好的选择。

于 2013-05-31T05:58:55.743 回答