我的应用程序有一个队列,其中包含“传出网络数据包”(带有 ByteBuffer
和 SocketChannel
的 POJO),由将数据写入的单个线程使用SocketChannel
。
我这样做是为了保证每个应该接收数据包的客户端都能轮到。这意味着 SocketChannel.write()
按顺序写入多个客户端(= 一次 1)。
谁能告诉我这样工作会出什么问题吗? SocketChannel
是从 ServerSocketChannel
创建的,因此它们是阻塞的。
我担心 write()
操作可能会阻塞 1 个客户端,导致其他客户端等待...
最佳答案
write()操作确实可以在阻塞模式下阻塞。如果您想要公平和单线程,则必须使用非阻塞模式。
关于java - SocketChannel.write() 在单个线程中处理多个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8076033/