java - SocketChannel.write() 在单个线程中处理多个客户端

标签 java nio socketchannel

我的应用程序有一个队列,其中包含“传出网络数据包”(带有 ByteBufferSocketChannel 的 POJO),由将数据写入的单个线程使用SocketChannel

我这样做是为了保证每个应该接收数据包的客户端都能轮到。这意味着 SocketChannel.write() 按顺序写入多个客户端(= 一次 1)。

谁能告诉我这样工作会出什么问题吗? SocketChannel 是从 ServerSocketChannel 创建的,因此它们是阻塞的。

我担心 write() 操作可能会阻塞 1 个客户端,导致其他客户端等待...

最佳答案

write()操作确实可以在阻塞模式下阻塞。如果您想要公平和单线程,则必须使用非阻塞模式。

关于java - SocketChannel.write() 在单个线程中处理多个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8076033/

相关文章:

java - 如何在 Java NIO 中正确关闭 SocketChannel?

java - 重用套接字 channel

java - Java.NIO 中顺序 channel 写入发送损坏的数据

java - 具有两个 toString 方法的自定义 JCombobox 模型

java - 如果子方法之一抛出异常,则跳过代码执行的最佳设计模式

java - RandomaccessFile,什么是真正的随机?

java - 在 SocketChannel 上通过 TCP 读取未定义字节数的流

java - SSL 和套接字 channel

Uniobjects for Java 的 Javadoc

java - Java中解析固定格式的文本文件