与えられた:
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);
}
doSomething()
タスクの内部状態に応じて、自分が最後のタスクであるかどうかを確認したいと思います。Phaser.onAdvance(int、int)を見つけましたが、この場合の使用方法が明確ではありません。