Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Dubbo 调用一定会阻塞线程吗?

查看完整题解

参考回答

直接回答

普通同步接口调用时,调用方线程会等到结果或异常。底层仍可用异步 I/O 收发包。想让业务代码发出请求后继续处理其他任务,可以使用返回 CompletableFuture 的接口。

讲清原理

客户端收到响应后完成对应的 Future。线程是否等待,取决于调用方何时需要这个值。提供端还能独立决定业务方法同步执行还是返回异步结果,两端的异步设置各管一段。

调用端取 Future 与提供端异步执行各自独立
调用端取 Future 与提供端异步执行各自独立

例子与易错点

查运费后立刻调用 join(),调用方仍会等。若多个查询互不依赖,可以先发出,再在真正需要合并结果时等待。

延伸阅读 Dubbo 的 I/O 线程和业务线程怎么分工? · Dubbo 3 服务端怎样异步执行? · Dubbo 3 消费者怎样异步调用?

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。