java - netty(或java NIO) channel 是先进先出的吗?

标签 java netty nio fifo

netty channel (或者一般的 java NIO channel )是 FIFO 吗?或者我需要自己使用序列号来实现 FIFO?

谢谢

最佳答案

NIO内部维护读写锁;然而它们是使用 NIO 中的同步 block 来实现的。

使用synchronized时,不保证线程B会在线程A之后获得锁。线程C完全有可能先于线程B获得写锁。

请参阅以下有关锁定释放的内容:Synchronized release order

如果您需要跨多个线程保证 FIFO,那么您需要使用 fair=true 创建一个 ReentrantLock 并要求所有线程首先获取该锁。

关于java - netty(或java NIO) channel 是先进先出的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38602609/

相关文章:

java - 尝试使用 Web 服务时出现 SOAPFAULTEXCEPTION

java - 用 Java 漂亮地打印 map

java - SpringJunit4ClassRunner 的类路径在哪里,如何直接指向我操作系统中的文件?

java - Netty IO 无所事事的编解码器?

java - NIO:OP_READ并且未读取所有数据; OP_READ 是否仍处于就绪状态?

java - 在Java中,如何将文件所有者设置为root?

java - 在使用 Apache 'HttpClient' 的 PUT 操作期间更快地检测中断的连接

java - 流媒体服务器的 Netty 4.x.x WebSocket 握手

java - 未调用 Netty 处理程序

java - 在缓冲区写入 channel 时尝试填充缓冲区