Java 将多个回调处理为一个接收方函数的最有效方法
我有一个异步API,它通过回调方法提供输出 现在,我必须同时调用这个API N次,然后等待N次对回调方法的点击/回调 为了实现这一点,我目前使用了计数器和同步方法Java 将多个回调处理为一个接收方函数的最有效方法,java,callback,synchronization,Java,Callback,Synchronization,我有一个异步API,它通过回调方法提供输出 现在,我必须同时调用这个API N次,然后等待N次对回调方法的点击/回调 为了实现这一点,我目前使用了计数器和同步方法 @Override public synchronized void onResponseReceived() { receivedCount++; if (receivedCount == totalCount){ onCallbacksComplete();
@Override
public synchronized void onResponseReceived() {
receivedCount++;
if (receivedCount == totalCount){
onCallbacksComplete();
}
}
我想知道,是否有更快的方法实现上述目标
谢谢。如果同步方法只是为了确保totalCount变量的准确性,您也可以为该变量使用类,该类是线程安全的,并为您提供该功能。然后可以删除onResponseReceived方法的synchronized修饰符,这将使同步块更小,并提供更好的性能 您可能还希望对接收的计数使用原子整数类 我希望这有助于使用 或
这避免了同步。听起来像是执行器和
倒计时锁存器的教科书案例(或者循环载波
,如果重复的话)。
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();
}
}