gpt4 book ai didi

java - 并行线程执行一个循环后打印输出

转载 作者:行者123 更新时间:2023-12-01 13:58:44 25 4
gpt4 key购买 nike

我正在编写一个多线程Java程序来模拟game of life 。每个细胞都有一个线程计算细胞存活值的下一个值。我解决了 %95 的问题线程正常工作并同步,但我不知道如何在每个步骤后打印出单元格矩阵。我的线程中有以下 run 方法:

public void run(){
while(true){ //this may also be finite
calculateNeighbourCount(); //threads count their alive neighbours
calculateBarrier(); //Threads wait until all threads complete calculation before changing content
next();//threads make cell's value the next computed value.
nextBarrier(); //Threads wait until all threads complete next()
//Here I want to print out cell matrix
}
}

我能想到的一个可能的解决方案是考虑迭代次数来分配内存。例如,如果我有 mxn 单元矩阵和 k 次迭代,我需要 mxnxk 3d 数组。然后我将具有正确索引的输出存储在该数组中,并在执行后输出。但是由于内存使用,这个解决方案似乎非常糟糕。我需要一种解决方法来在所有单元格一起更改时打印矩阵的快照。

最佳答案

来自java文档:

A CyclicBarrier supports an optional Runnable command that is run once per barrier point, after the last thread in the party arrives, but before any threads are released. This barrier action is useful for updating shared-state before any of the parties continue.

您可以在文档 here 中查看示例,但一般来说,构造函数之一接受 Runnable 。您可以使用它在每个周期后进行打印。

关于java - 并行线程执行一个循环后打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19476796/

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