日期:2014-05-20  浏览次数:20683 次

先问个nio初级问题,nio和多线程模型如何选择
在服务器端用nio或多线程模型都能实现同时服务多个用户的需求。请问什么时候选择多线程模型?什么时候选择nio?选择nio的好处是什么?

------解决方案--------------------
你如果理解NIO的机制, 以及概念
还有多线程模型的话你自然而然就知道了,
这些东西没有什么规则的, 具体问题具体分析吧, 有好有坏的。
------解决方案--------------------
可以根据吞吐规模和并发度来决定。

如果是并发度很高,且个体吞吐量小的,那么用nio比较好,这样你就不需要海量的线程数去对付海量的并发量,因为线程创建和线程切换也是有代价的。

如果是并发度不高,但个体吞吐量大或者说频密,那么用多线程模型比较好,这样每个连接都有专属线程,服务效率高。
------解决方案--------------------
直接上netty。
------解决方案--------------------
每个 Channel 使用一个读线程,可以使用多个写线程进行处理。
------解决方案--------------------
探讨

引用:

每个 Channel 使用一个读线程,可以使用多个写线程进行处理。

我觉得写线程也可以用同一个,甚至合并到读线程中,因为Selector也可以侦测OP_WRITE事件,我这里现在就是这么做的,整个应用就是一个线程,处理几千个TCP连接。觉得写线程也可以用同一个,甚至合并到读线程中,因为Selector也可以侦测OP_WRITE事件,我这里现……