首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java -一系列异步调用,但在继续之前必须等待每个异步调用的响应

Java -一系列异步调用,但在继续之前必须等待每个异步调用的响应
EN

Stack Overflow用户
提问于 2018-10-12 05:21:18
回答 1查看 86关注 0票数 -1

单个异步调用的现有流程如下:对发送基于消息的调用的内部java服务进行调用。至此,该过程已完成。

已经实现了观察者模式,当响应(基于消息)返回到java服务时将被调用。

编辑后给出了更多细节:我已经使用CountDownLatch和Phaser进行了测试,以使这两个场景都能正常工作,其中我的主线程负责产生并行线程异步调用。并行线程完成,并且主线程等待接收到来自异步调用的响应的通知。如果响应表示成功,则继续执行下一个并行调用,依此类推。下面是一个运行良好的Phaser示例。问题是,我是在正确的道路上,还是有更容易/更好的东西?

main thread:
    new Phaser(1);
    for (iteration of number of request objects received){
        create new thread, call serviceMethod.
        phaser.arriveAndAwaitAdvance;  //waits for arrival of registered party 

        if phaser.isTerminated
            stop processing this request;
    }



serviceMethod(){
    phaser.register
    perform call
}


onResponse(){
    if SUCCESS  
        phaser.arriveAndDeregister();  //main thread should continue on to 
                       next call
    else
        phaser.forceTermination
}
EN

回答 1

Stack Overflow用户

发布于 2018-10-12 06:19:22

尽管我对你的问题发表了评论,但我会给出一个答案,因为我相信我可以给你一个不同的答案,而不需要看到你的任何代码:

根据定义,异步调用是指调用者不会阻塞等待响应的调用。因此,如果您需要等待响应,则可以通过进行一系列同步调用来避免您所描述的问题。

同样,将您的问题中的一句话转述一下:“这个过程应该是我进行调用,但在触发下一个调用之前等待响应。”描述同步调用方案。从这个意义上说,我怀疑你从错误的方向来处理这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52769119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档