将多个回调处理成一个接收函数的最有效方法

时间:2015-05-03 00:53:53

标签: java callback synchronization

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

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

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

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


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

我想知道,如果有更快的方法来实现上述目标吗?

感谢。

1 个答案:

答案 0 :(得分:1)

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

这可以避免同步。