У меня есть двумерный клеточный автомат. В некоторых ячейках может быть актор (агент). Каждый актер — это поток. Мне нужно переместить актера на основе 9 ячеек вокруг ячейки актера. Я хочу сделать это одновременно, чтобы актер в ячейке (4,5) мог использовать соседние ячейки (3,4), (4,4), (5,4), (3,5), (5,5) , (3,6), (4,6), (5,6) и никакие другие акторы не могут использовать эти ячейки. Если у какого-то актера есть эти клетки в его соседстве, он должен ждать, пока первый актер не переместится. Но я хочу разрешить одновременное перемещение актера, у которого нет общего соседства. Таким образом, актер в (4,5) может двигаться одновременно с актером в (10,5), потому что у них нет общей окрестности.
Какое лучшее решение этого? Вы можете что-то предложить?
Cell[][] matrix
. Всякий раз, когда поток переходит к следующей ячейке, он владеет монитором в этой ячейке:synchronized(matrix[i][j]) { Thread.sleep(1000); }
- person Anton Dovzhenko   schedule 27.12.2016