2010-03-18 3 views
1

Je construis un SocketServer utilisant Apache Mina et je suis en train de comprendre la configuration du modèle de fil. Je lis actuellement:Java SocketServer utilisant Apache Mina - comment mettre en place le filetage?

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

Comme je le comprends; il est préférable d'utiliser multithreading pour chaque IOService, quelque chose comme:

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

Je comprends aussi qu'il est préférable d'utiliser plusieurs threads pour les événements de service dans la chaîne de filtre:

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

Est-ce exact?

Si oui, est-il une règle de pouce pour le nombre optimal de threads pour traiter les événements?

+0

Oui, vous devez utiliser ExecutorFilter. – accuya

Répondre

3

La solution que je suis venu avec était d'utiliser Mina 2.0 qui gère lui-même multithreading - fonctionne parfaitement.

Questions connexes