Для моей домашней работы я должен сделать игру нескольких королей, перемещающихся по шахматной доске. Каждый король должен перейти от своего уникального начала к уникальной конечной позиции в своей нитке. Перед тем, как сделать свой ход, король должен спать до 10 миллисекунд (немного случайности), а затем ждать, пока другие сделают ход.Исключить конкретную тему от CyclicBarrier
Я решил проблему королей, ожидающих друг друга, чтобы сделать ход с CyclicBarrier
, но проблема возникает, когда один из королей добирается до конечной позиции, таким образом останавливая свою собственную нить. Затем CyclicBarrier
ожидает, что поток вызовет метод wait(), но это никогда не происходит, поскольку поток больше не работает.
Любые предложения?
Невозможно напрямую выполнить то, что вы хотите, с помощью класса java.util.concurrent.CyclicBarrier. Возможно, вы сможете настроить логику королей, чтобы, однако, CyclicBarrier все же помогал вам. – Sbodd
Рассматривали ли вы создание подкласса «CyclicBarrier» с помощью дополнительного метода - возможно, «ушел» был бы уместным - что просто порождает поток, который использует функции выходящего потока, просто «ждут» в цикле? Это, конечно, как я подхожу к этому. – OldCurmudgeon