我有一个异步API,可通过回调方法提供输出。
现在,我必须同时调用此API N次,然后等待N次对回调方法的点击/回调。
为了实现这一点,我目前使用了一个计数器并使该方法同步。
@Override
public synchronized void onResponseReceived() {
receivedCount++;
if (receivedCount == totalCount){
onCallbacksComplete();
}
}
我想知道,是否有更快的方法来实现上述目标?
谢谢。
最佳答案
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();
}
}
这避免了同步。