每k步同步两个线程

时间:2013-05-30 19:09:45

标签: java multithreading

我遇到了Java线程的问题。我必须分别运行两个线程来执行已定义的步骤,然后我必须让它们进行通信。 线程1必须读取线程2拥有的ArrayList并对线程2进行修改和相同。 哪个是同步它们的更好方法?我可以将thread1的arrayList用于线程2,还是必须定义不同的共享区域?

感谢大家。

2 个答案:

答案 0 :(得分:4)

使用专用同步器比锁定其中一个ArrayList更清晰 我建议使用CyclicBarrier。引用JavaDoc:

  

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

答案 1 :(得分:0)

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