发布网友 发布时间:2022-04-23 04:18
共1个回答
热心网友 时间:2023-07-03 16:48
OIO是读写阻塞, NIO是读写非阻塞,就是说服务器等待客户端连接这块都是阻塞的, 一旦建立连接了, OIO下, 我读取客户端发来的信息会因网络延时问题又一次阻塞, 你发消息时也是一样 而NIO下, 你的selector.select()如果注册了read或者write, 当消息到达服务端时, 人家从阻塞中醒来提醒你,换句话说, 不是说阻塞消失了, 而是你想多处阻塞等待还是一处阻塞, 然后你干别的事, 数据来了通知你. 如果有兴趣你还可以了解下AIO, 一样有阻塞, 不过很多事操作系统帮你归口做了而已, 与NIO的区别就是, NIO是数据到了提醒你读, AIO是数据读成功了提醒你一切都好. 总之, 这三种java都可支持, 都存在阻塞, 总的区别就是你在这件事上担当的角色不同