Étant donné:Comment savoir quand la dernière partie se déclenche Phaser.arrive()?
Executor executor = ...;
Phaser phaser = new Phaser(n);
for (int i=0; i<n; ++i)
{
Runnable task = new Runnable()
{
public void run()
{
phaser.arriveAndDeregister();
if (lastTask)
doSomething(this);
}
}
// run tasks using a thread-pool (order is not guaranteed)
executor.submit(task);
}
Je voudrais savoir si je suis la dernière tâche afin de tirer doSomething()
qui dépend de l'état interne de la tâche. J'ai trouvé Phaser.onAdvance(int, int) mais on ne sait pas comment l'utiliser dans ce cas.
Je ne pense pas que votre code doit vérifier si '(registeredParties == 0)' 'parce que onAdvance()' est garanti pour s'invoqué que lorsque tous les partis sont arrivés. S'il y a 0 parties en attente ou plus, l'événement devrait se déclencher. – Gili
Tout à fait raison, édité. – rxg