Synchronizers(Синхронайзеры)
Что это
Synchronizers - объекты, которые координируют выполнение потоков, основываясь на
своем состоянии.
Реализации
- FutureTask - класс конструктор которого принимает Callable или Runnable. Можно передать в Thread или
ExecutorService. get() - блокирует візівающий поток, пока задача не выполниться/прервется.
- Semaphore - имеется заданное количество пермитов, которые выдает по запросу.
- CountDownLatch - нужен для одновременного запуска нескольких(указанное число) потоков. Все потоки
попавшие в него засыпают, но при наборе указанного количества потоков одновременно все запускаются.
Но его нельзя повторно использовать.
- CyclicBarrier - добавленные потоки дойдя до указанного участка(барьере) будут ждать указанного
количество потоков, чтобы продолжить выполнение. Есть несколько потоков → каждый выполняет свою часть
работы → все доходят до одной точки → ждут, пока придут остальные → и только после этого все продолжают
дальше одновременно. Повторное использование.