Netty получает параллелизм событий?Как насчет событий DownStream и Upsream? - PullRequest
2 голосов
/ 28 декабря 2011

событийные документы http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/ChannelEvent.html

Например: Можно ли получить два события одновременно?

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
    Thread.sleep(10000);
}

Если сообщение получено займет много времени, могу ли я получить другое сообщение, полученное в другой теме? Или у нетты очередь всех событий?

другой пример

int i=0;

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
    i++;
}

правильно ли приращение?

Другой вопрос.

Параллельно ли работают восходящие и нисходящие события?

Ответы [ 3 ]

4 голосов
/ 28 декабря 2011

Это не завершено верно ..

Если вы используете новый экземпляр обработчика для каждого канала, вам не нужно делать его поточно-ориентированным. Единственное исключение - когда вы реализуете DownstreamHandler, поскольку нисходящие события могут запускаться любым потоком.

Так что, пока вы заботитесь только о ChannelUpstreamHandler, вам не нужно выполнять синхронизацию (если вы используете один обработчик на канал)

1 голос
/ 29 декабря 2011

найдено в Javadoc

Безопасность потока

handleUpstream будет последовательно вызываться одним и тем же потоком (т. Е. Потоком ввода-вывода), и поэтому обработчику не нужно беспокоиться о том, что он будет вызван с новым событием восходящего потока до завершения предыдущего события восходящего потока.

Резьба безопасности

handleDownstream может вызываться более чем одним потоком одновременно. Если обработчик обращается к общему ресурсу или сохраняет информацию о состоянии, вам может потребоваться правильная синхронизация в реализации обработчика.

messageReceived является событием Upstream и будет вызываться последовательно

0 голосов
/ 28 декабря 2011

Да, Netty Framework поддерживает пул потоков.Он будет вызывать столько же методов messageRectained одновременно, сколько и потоков.Каждый выполняемый вами метод должен быть потокобезопасным.

...