NIO实现的最佳模型?

史蒂芬:

我正在转换我们的Java代码以使用NIO,但是我不确定设计它的最佳方法。

我最初的方法是创建选择器线程池。线程将根据需要启动/杀死,并且以循环方式连接/接受通道时,会将通道注册到选择器线程。从那里开始,每个线程都会在select()上阻塞,并且在唤醒时将运行与具有选定键的每个通道相关联的适当回调。

除了这种“多个选择器线程”设计之外,我还看到人们说要使用单个选择器线程和一个调度线程池。当准备好执行IO操作时,选择器通知调度程序线程,该线程随后处理请求。此模型的好处是不会阻塞IO线程,但是现在我们将所有IO强制进入单个线程,并在调度程序中处理同步/事件队列。

另外,我将无法使用单个直接字节缓冲区读取每个通道,而将其直接传递给回调。相反,每次读取时我都必须将数据复制到数组中并进行重置。(我认为..)

实现此目的的最佳方法是什么?

pjp:

看看反应堆模式

http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf

您希望选择器如何工作实际上取决于您的用例。(连接数,消息大小等)

您正尝试从IO转换为NIO来解决什么问题?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章