我正在scala中编程,用play framework 2.5.3开发一个web应用程序,我需要创建一个TCP /client,它将利用play的异步模型。看了一会儿之后。我在Java 7中学习了NIO.2's AsynchronousServerSocketChannel/AsynchronousSocketChannel,我在这里找到了一个针对Scala的NIO.2实现(https://gist.github.com/happy4crazy/1901b1be0cb924898d13)。
修改后,我能够运行代码并检查jvisualvm中的线程。我注意到NIO.2在接受连接时正在创建自己的线程。我担心NIO.2's Threads和play framework's dispatcher线程会在高压力下导致问题并减缓web应用程序的运行速度。这会导致问题吗?是否有更好的方法来使用play框架的异步模型来实现integrate NIO.2?
先谢谢你,弗朗西斯
发布于 2016-06-18 19:33:36
当Play使用Netty进行I/O时,Netty有自己的线程池,并且不会引起问题(https://www.playframework.com/documentation/2.5.x/ThreadPools)。因此,我可以假设NIO.2有自己的线程池也是安全的。
同时,您可以将NIO.2配置为使用与Play相同的线程池。首先,提取游戏的线程池。让它命名为executor。然后
AsynchronousChannelGroup group = AsynchronousChannelGroup.withThreadPool(executor);
AsynchronousServerSocketChannel channel = AsynchronousServerSocketChannel.open(group);
AsynchronousSocketChannel channel = AsynchronousSocketChannel.open(group);https://stackoverflow.com/questions/37899478
复制相似问题