gpt4 book ai didi

java - Scala Play Framework 和 NIO.2

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:27 27 4
gpt4 key购买 nike

我正在使用 scala 进行编程,以使用 play 框架 2.5.3 开发 Web 应用程序,并且我需要创建一个 TCP 服务器/客户端,以利用 play 的异步模型。读了一会儿之后。我了解了 Java 7 中的 NIO.2 AsynchronousServerSocketChannel/AsynchronousSocketChannel。我在 Github 上找到了 Scala 的 NIO.2 实现( https://gist.github.com/happy4crazy/1901b1be0cb924898d13 )。

修改后,我能够运行代码并检查 jvisualvm 中的线程。我注意到 NIO.2 在接受连接时正在创建它自己的线程。我担心 NIO.2 的线程play 框架的 调度程序线程会导致问题,并在高压力下减慢 Web 应用程序的速度。这会导致问题吗?是否有更好的方法将 NIO.2 与 play 框架的异步模型集成?

提前感谢您弗朗西斯

最佳答案

当 Play 使用 Netty 进行 I/O 时,Netty 有自己的线程池,不会引起问题( https://www.playframework.com/documentation/2.5.x/ThreadPools )。所以我可以假设 NIO.2 有自己的线程池这一事实也是安全的。

同时,您可以配置 NIO.2 以使用与 Play 相同的线程池。首先,提取Play的线程池。让它命名为executor。然后

AsynchronousChannelGroup group = AsynchronousChannelGroup.withThreadPool(executor);
AsynchronousServerSocketChannel channel = AsynchronousServerSocketChannel.open(group);
AsynchronousSocketChannel channel = AsynchronousSocketChannel.open(group);

关于java - Scala Play Framework 和 NIO.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899478/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com