我正在构建一个小型客户端/服务器聊天应用程序。我NIO.2在尝试使用经典NIO库模拟它后遇到了它。
我使用 classisc NIO 对 NIO.2 库进行“模拟”的目标是在通过 a 成对连接的多个线程中使用多个选择器ArrayBlockingQueue,以避免网络读写时间。
我的问题是,如何在 NIO.2 库中使用AsynchronousSocketChannels和CompletionHandlers(根据我的理解作为回调)同时处理多个事件?
经典的NIOlib 使用Selectorswhich 在select调用 a后交付key set。这key set然后可以遍历每个事件(阅读,接受并写入)可以处理一个又一个。
在NIO.2另一方面回调,没有这样的序列。它们是异步的。那么,例如,如果 2 个客户端在同一时刻向服务器发送消息,会发生什么?
那么 2 个回调是否同时运行?如果是,那么如何?它们是否都在单独的线程中运行?
如果我要从每个回调中获取这些消息并尝试将它们排入队列,如前所述ArrayBlockingQueue,它们会相互等待吗?
绝地无双
慕的地6264312
随时随地看视频慕课网APP
相关分类