my application has a queue with " outgoing network packets" (A POJO with a ByteBuffer
and a SocketChannel
) inside, consumed by a single thread that writes the data to the SocketChannel
.
I do this to guarantee that every client that should receive packets, gets its turn. This means that SocketChannel.write()
writes sequentially to multiple clients (= 1 at a time).
Can anyone tell me what could go wrong working like this? The SocketChannels
are created from a ServerSocketChannel
, so they're blocking.
I fear that the write()
operation could block for 1 client, making the other clients wait...
The write() operation can indeed block in blocking mode. If you want fairness and single threading you will have to use non-blocking mode.