gpt4 book ai didi

Java 线程数组列表

转载 作者:行者123 更新时间:2023-12-01 04:40:06 25 4
gpt4 key购买 nike

我有一个包含 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++

否则,没有变化。

当然,在所有线程完成检查之前不会进行任何更改。

我的问题是,如果我是数组列表中的一个线程,我如何查看我的邻居?

我想到了以下几点:

  1. 对于每个线程,检查邻居。
  2. 每个线程都会保存一个int字段,相应地改变它,0代表不改变,1代表inc,2代表dec。
  3. 通过缓冲区(计数器)进行同步以对所有线程进行计数并确保每个线程都已完成。
  4. 应用 inc、dec 或不进行更改。

你觉得怎么样?

谢谢。

最佳答案

我想说你应该使用 CyclicBarrier使所有线程相互等待。除此之外,要检查它们的邻居,只需在构建时为每个线程提供其在列表中的索引以及列表本身,以便每个线程都可以查找其邻居拥有的值。

也就是说,我不知道目标是什么,但循环遍历数组的单个线程可能会更简单、更快。

关于Java 线程数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com