2010-03-18 7 views
1

Я создаю socketserver, используя Apache Mina, и я пытаюсь понять конфигурацию модели потока. Я сейчас читаю:Java socketserver с помощью 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()) 
); 

Правильно ли это?

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

+0

Да, вы должны использовать ExecutorFilter. – accuya

ответ

3

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