转发地址:https://www.jianshu.com/p/9978a80d5ab7
-若当前TCP发送缓冲区已满,则将OP_WRITE添加到ch.selectionKey.interestOps中,等待TCP发送缓冲队列可写时重新触发write操作;
-若当前TCP发送缓冲区未满,构造一个flush()事件,等待EventLoop的下一个循环重新检测ChannelOutboundBuffer中有无待flush的数据。
SelectionKey.OP_WRITE用在NIO通道不可写的时候设置,然后呢,后续所有的写操作都判断当前是否设置了SelectionKey.OP_WRITE,如果有设置,说明通道目前还不可用,本次就不会往通道写数据,因为即使写,也会失败,直到在selector上轮询到SelectionKey.OP_WRITE事件,即表示通道这个时候可用,才会把数据写到缓冲区。
网友评论