Java сокетсервер с использованием Apache Mina - как настроить многопоточность? - PullRequest
1 голос
/ 19 марта 2010

Я создаю сокет-сервер с использованием Apache Mina и пытаюсь разобраться в настройке модели потока. Я сейчас читаю:

http://mina.apache.org/configuring-thread-model.html

Как я понимаю; Лучше всего использовать многопоточность для каждого IOService, например:

SocketAcceptor acceptor = new SocketAcceptor( 
    Runtime.getRuntime().availableProcessors() + 1, 
    Executors.newCachedThreadPool()
);

Я также понимаю, что для обслуживания событий в цепочке фильтров лучше использовать несколько потоков:

SocketAcceptor acceptor = ...;
DefaultIoFilterChainBuilder filterChainBuilder = 
    acceptor.getDefaultConfig().getFilterChain();
filterChainBuilder.addLast("threadPool", 
    new ExecutorFilter(Executors.newCachedThreadPool())
);

Это правильно?

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

1 Ответ

3 голосов
/ 08 апреля 2010

Решением, которое я придумал, было использование Mina 2.0, которая сама управляет многопоточностью - работает отлично.

...