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

Most efficient way to process multiple callbacks into one receiver function

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

现在,我必须同时调用此 API N 次,然后等待 N 次 hits/callbacks 到回调方法。

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

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


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

我在想,有没有更快的方法可以达到上面的效果?

谢谢。

如果您同步该方法只是为了确保 totalCount 变量的准确性,您也可以使用 Atomic Integer class 作为变量,它是线程安全的并为您提供该功能.然后您可以删除 onResponseReceived 方法的 synchronized 修饰符。这将使您的同步块更小并提供更好的性能。

您可能还想对接收计数使用原子整数 class。

希望对您有所帮助

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

这避免了同步。