我有一个异步API,可通过回调方法提供输出。

现在,我必须同时调用此API N次,然后等待N次对回调方法的点击/回调。

为了实现这一点,我目前使用了一个计数器并使该方法同步。

@Override
    public synchronized void onResponseReceived() {
       receivedCount++;


        if (receivedCount == totalCount){
            onCallbacksComplete();
        }
    }


我想知道,是否有更快的方法来实现上述目标?

谢谢。

最佳答案

使用AtomicInteger

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();
    }
}


这避免了同步。

10-04 12:36