Документация netty предлагает использовать переменные экземпляра в ChannelHandlers для отслеживания состояния канала. В нем не упоминается, что вы должны использовать изменчивые переменные или использовать любой другой метод синхронизации, чтобы обеспечить согласованное представление между потоками.
Например, используя этот обработчик для каждого соединения:
class Handler extends SimpleChannelUpstreamHandler {
int count = 0;
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
++count;
}
}
Я ожидаю, что многие разные потоки из пула потоков netty будут вызывать этот метод, хотя и не одновременно, и потенциально могут увидеть несогласованное представление, что приведет к неточному подсчету.
Так ли это? или внутри netty происходит какая-то синхронизация, из-за которой запись в поле count сбрасывается?