을 감안할 때 :마지막 파티가 언제 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);
}
내가 작업의 내부 상태에 따라 달라집니다 doSomething()
을 발사하기 위해 마지막 작업을 해요 있는지 확인하고 싶습니다. 내가 찾은 Phaser.onAdvance(int, int)하지만이 경우에 그것을 사용하는 방법을 명확하지 않습니다.
'onAdvance()'가 모든 상대방이 도착한 후에 만 호출되도록 보장되어 있기 때문에 코드에서'if (registeredParties == 0) '를 확인하지 않아도됩니다. 기다리는 파티가 0 개 이상이든 관계없이 이벤트가 시작됩니다. – Gili
옳은 편집 됨. – rxg