Skip to content

Conversation

@Sla-als
Copy link
Owner

@Sla-als Sla-als commented Jul 1, 2020

Этапы дз

  • создан класс training в который вынесена подготовка из метода run, для того чтобы применить cb.

  • в качестве аргумента в метод training передается CyclicBarier, так и происходит ожидаение всех участниуов на этапе подготовки.

  • изменен метод запуска потока для участников (// потоки участников) - все разделено по этапам.

  • создаем CountDownLatch cdl для того чтобы ожидать завершения операций приготовления training и отправить sout"Гонка началась!"

  • Создан класс Semaphore ( cars/2) те ограничивает количество потоков как количкство участников/2

  • В конструктор класса Tunnel добавлен smp

  • перед Началом этапа метод acquire(), в конце release() таким образом, если stage == Tunnel то проезжают только половина участников, остальные ждут когда произойдет метод relaese() (те Реализовано в классе Tunnel)

  • так же как во втором пункте делаем и с Semaphore smpFin, поместив его в main и ограничив счетчик количеством участников, по завершении всех потоков выводится sout о завершении гонки

  • Финиширование реализовано в классе car: создан экземпляр Lock и методок locktry ждем первый попавшийся поток и выводим sout о Выигрыше участника. lock оствляем заблокированным. остальные потоки не пройдут в условии.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants