In this chapter, we explained one of the most powerful synchronization mechanisms provided by the Java concurrency API: the phaser. Its main objective is to provide synchronization between tasks that execute algorithms divided into phases. None of the tasks can begin the execution of a phase before the rest of the tasks have finished the previous one.
The phaser has to know how many tasks have to be synchronized. You have to register your tasks in the phaser using the constructor, the
bulkRegister() method or the
Tasks can synchronize with the phaser in different ways. The most common are indicating to the phaser that it has finished the execution of one phase and wants to continue with the next one with the