我在寫一個多線程Java程序,它模擬game of life。每個單元有一個線程計算細胞活性值的下一個值。我解決了95%的問題線程正常工作和同步,但我無法弄清楚如何在每一步之後打印出單元格矩陣。我在我的線程以下運行方法:並行線程執行一個循環後的打印輸出
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
}
}
一個可能的解決方案,我能想到的是分配內存考慮iterations.For例子的數量,如果我有MXN細胞基質和K的迭代次數,我需要mxnxk 3D陣列。然後我在這個數組中存儲具有適當索引的輸出並在執行後輸出。但由於內存使用情況,此解決方案看起來非常糟糕。當所有單元格一起更改時,我需要一個解決方法來打印矩陣的快照。
那麼你說的矩陣共享是否屬於所有線程?你是否試圖用[線程安全](http://arashmd.blogspot.com/2013/06/java-threading.html#synctr)的方式展示它? – 2013-10-20 11:45:49