NIO 和 TCP 对于许多连接来说是一个很好的组合。由于每个新客户端都需要打开一个新连接,因此每个客户端通常需要自己的线程来进行阻塞式 I/O 操作。NIO 解决了这个问题,它允许在数据可用时进行读取,而不是一直阻塞等待数据。但是 UDP 呢?
我的意思是,无连接的 UDP 由于其协议设计方式(发送并忘记)而没有与 TCP 相关的阻塞性质。如果我决定向某个地址发送一些数据,那么它将立即执行,没有延迟(在服务器端)。同样,如果我想读取数据,我只需从不同来源接收各个数据包。我不需要使用许多线程建立许多到不同地方的连接来处理它们。
那么,NIO 和选择器如何增强 UDP?更具体地说,什么情况下会优先使用带有 NIO 的 UDP 而不是 java.net
包中旧的方法?