У меня есть вопрос о параллелизме в обработчиках восходящего / нисходящего канала канала. Я всегда думал, что если при создании канала создается новый обработчик (то есть обработчик не разделяется между каналами), максимум один поток взаимодействует с обработчиком.
Теперь я просматривал примеры. Более конкретно, возьмите это: http://docs.jboss.org/netty/3.2/xref/org/jboss/netty/example/discard/DiscardServerHandler.html
В коде есть переменная-член (она используется для подсчета общего количества байтов):
private final AtomicLong transferredBytes = new AtomicLong();
Почему они используют AtomicLong здесь? Обработчик построен следующим образом (см. http://docs.jboss.org/netty/3.2/xref/org/jboss/netty/example/discard/DiscardServer.html):
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(new DiscardServerHandler());
}
});
Итак, обработчик не является общим. Я не могу найти причину, по которой они хотели бы использовать AtomicLong вместо простого длинного здесь. Может кто-нибудь объяснить?
Спасибо!