netty文檔建議在ChannelHandlers中使用實例變量來跟蹤通道狀態。它沒有提到你應該使用volatile變量或者使用任何其他同步技術來確保跨線程有一致的視圖。在Netty ChannelHandler中保持狀態
例如,使用在每個連接的基礎這個處理程序:
class Handler extends SimpleChannelUpstreamHandler {
int count = 0;
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
++count;
}
}
我希望從一個網狀線程池中的許多不同的線程將調用此方法,但不能同時使用,並有可能看到一個不一致的觀點,導致計數不準確。
這是這種情況?或者netty內部是否有某種同步進行,這會導致寫入計數字段的內容被刷新?
謝謝!這就是我所尋找的,「Netty保證給定的管道實例始終從同一個工作線程回調」 –