我有一个异步API,它通过回调方法提供输出。
现在,我必须同时调用此API N次,然后等待回调方法的N次点击/回调。
为了实现这一点,我目前使用了一个计数器并同步了该方法。
@Override
public synchronized void onResponseReceived() {
receivedCount++;
if (receivedCount == totalCount){
onCallbacksComplete();
}
}
我想知道,如果有更快的方法来实现上述目标吗?
感谢。
答案 0 :(得分:1)
AtomicInteger receivedCount= new AtomicInteger();
@Override
public void onResponseReceived() {
if (receivedCount.incrementAndGet() == totalCount){
onCallbacksComplete();
}
}
或
AtomicInteger receivedCount= new AtomicInteger(totalCount);
@Override
public void onResponseReceived() {
if (receivedCount.decrementAndGet() == 0){
onCallbacksComplete();
}
}
这可以避免同步。