У меня есть программа с этой общей структурой:
init
create CyclicBarrier
initialise all threads, attaching to barrier
*start all threads*
wait for join
display stats
*start all threads*
perform calculation
await barrier
Моя проблема в том, что мне нужен метод run() потоков, чтобы продолжать цикл до тех пор, пока не будет выполнено определенное условие, но с паузой после каждой итерации, чтобы синхронизировать все потоки.
Я уже пробовал прикрепить метод Runnable к барьеру, но это требует воссоздания и перезапуска каждого потока, что не очень хорошее решение.
Я также пытался использовать метод reset() CyclicBarrier, но это, похоже, вызывает ошибки в существующих потоках, даже если они выполняются после завершения всех потоков.
Мой вопрос:
-Можно ли «сбросить» барьер и заставить все потоки барьера следовать тем же условиям, что и до первых вызовов await()?
-Или есть другой метод, который я должен использовать для достижения этой цели?
заранее спасибо
while(true)
вThread
.await()
барьер в конце цикла. Когда все потоки выполнены, тогдаreset()
барьер и все начинается снова... - person Boris the Spider   schedule 05.05.2014