我有一个n个线程数组,每个线程都有一个1到100的数字。
对于每次迭代,所有线程都需要检查它们的邻居。
For thread i
IF thread[i].number > thread[i+1].number
AND thread[i].number > thread[i-1].number
THEN thread[i].number--
IF thread[i].number < thread[i+1].number
AND thread[i].number < thread[i-1].number
THEN thread[i].number++
否则就没什么变化了。
当然,在所有线程都完成检查之前,不会进行任何更改。
我的问题是,如果我是一列名单中的一条线,我怎么看我的邻居?
我想到了以下几点:
你认为如何?
谢谢。
发布于 2013-05-22 13:45:12
我想说的是,您应该使用一个CyclicBarrier来让所有线程彼此等待。除此之外,要检查它们的邻居,只需在构造时为每个线程提供其在列表中的索引,以及列表本身,以便每个线程都可以查找其邻居的值。
尽管如此,我不知道目标是什么,但是一个线程在数组中循环可能会更简单、更快。
发布于 2013-05-22 14:29:28
使用ArrayList,您可以使用get(i)获取特定的索引。使用get(i+1)和get(i-1)就可以了
https://stackoverflow.com/questions/16701974
复制相似问题