当前位置: 代码迷 >> 高性能WEB开发 >> java nio 让小弟我很纠结
  详细解决方案

java nio 让小弟我很纠结

热度:365   发布时间:2012-02-19 19:43:39.0
java nio 让我很纠结
JAVA NIO出来后,大家都说比原IO性能好,我相信肯定绝对一定是这样的。
但是我很纠结,为什么呢?大致的理由是:IO机制一个socket连接对应一个输入/输出通道,一个输入/输出通道在对应一个线程,这样有多个请求,就需要开辟多个线程,这样对CPU的负担大大的提高。关系是一对一的。而NIO不必,通道已经由一个线程建立好了,有事就说话,说了就去做,而且在一个线程中建立了多个通道,可以同时做很多事情,不会像原先那样开辟多个线程,耗费CPU资源,关系是1对多的。这我就很不明白,如果ABCDE5个客户端去连接IO服务端请求数据,那5个线程是至少的。但是同样连接NIO服务端呢?是和一个线程的5个通道建立了联系了吗?所以只有1个线程.那我想问这个5个通道的数据请求是并行执行的呢还是顺序执行的呢?如果是并行,1个线程能做到吗啊? 如果顺序执行是不是有等待阻塞的时间?就算NIO不考虑执行的结果正确与否顺序执行下去,是不是总得有5次处理时间? 这个同IO5个线程并行处理5个请求,谁的性能会高呢?




------解决方案--------------------
NIO的一个线程中当然是串行执行的,每次处理一个事件。
如果你的服务端每个请求处理时间较长,用NIO是比阻塞方式要好。
  相关解决方案