我正在浏览 twitter finagle库,它是 scala 中的一个异步服务框架,我对一般的异步库有一些疑问。
据我了解,使用回调的同步库的优点是应用程序线程获得空闲,并且一旦通过网络完成请求,库就会调用回调。通常,应用程序线程可能没有与库线程的 1:1 映射。
- 库线程中的服务调用阻塞对吗?
- 如果是这种情况,那么我们只是在其他线程中进行阻塞调用。这使应用程序线程自由,但其他一些线程正在做同样的工作。我们不能仅仅增加应用程序线程的数量来获得这个优势吗?
我可能误解了异步库通常是如何在 Java/Scala 或 JVM 中实现的。谁能帮我理解这是如何工作的?