播放异步WS API解释

loc*_*ost 4 asynchronous scala playframework

我刚开始学习Play框架,到目前为止真的很喜欢它.只有一件事我不清楚.我是一名Java开发人员,具有阻塞和多线程思维方式,因此异步编程对我来说有点新鲜.

因此,Play框架使用异步WS API,它不会阻止调用它的线程,也不会阻塞或生成任何其他线程.在进行异步编程时,通常需要生成一个新线程,然后进行WS调用,这样就不会阻塞主线程.所以我的问题是Play的WS API如何在不阻塞当前线程且不产生新线程的情况下对Web服务进行异步调用?如果Future对象中有可用的响应,它是否会每次检查一次请求然后主线程一次检查?我知道如何使用它,但我想知道什么是"引擎盖下"的交易.如何在Scala中实现?如果可能,一个简单的例子将是一个很好的帮助.

在此先感谢您的问候!

dre*_*xin 5

在引擎盖下播放使用基于NIO的async-http-client.将调度请求,当服务器响应时,将在线程池的线程上执行回调(在这种情况下,将来完成).这样就不会阻塞任何线程.

  • 这有点复杂.NIO提供选择器,用于监视事件的通道.单个线程可以通过这种方式监视多个通道,并在有数据需要处理后将回调分派给线程池. (3认同)