簡體   English   中英

Netty(或Java NIO)通道是FIFO嗎?

[英]Are netty (or java NIO) channels FIFO?

網絡通道(通常是Java NIO通道)是否是FIFO? 還是我需要使用序列號自己實現FIFO?

謝謝

NIO在內部維護讀寫鎖定; 但是,它們是使用NIO中的synchronized塊實現的。

沒有保證線程B將線程A后獲得鎖當使用synchronized 線程C很有可能在線程B之前獲得寫鎖定。

請參閱以下有關鎖定釋放的信息: 同步釋放順序

如果需要跨多個線程保證FIFO,則需要創建一個帶有fair=trueReentrantLock ,並要求所有線程首先獲得該鎖。

維護順序不是傳輸層的責任。因此,您通過同一通道(同一套接字)發送消息A和消息B,在服務器端,消息到達順序是不確定的。

滿足以下條件的消息到達順序為發送順序:

  • 使用TCP協議
  • 消息A和消息B在一個系統調用中發送

如果您需要訂購,則您的應用程序應該執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM