2013-04-17 4 views
0

J'ai regardé partout mais je n'ai pas pu trouver un bon exemple expliquant NIO2 ou comment faire de l'E/S asynchrone avec des sockets Java. Par exemple, si je veux accélérer un robot d'indexation Web en autorisant les threads à utiliser des E/S asynchrones pour lire des sockets au lieu d'E/S synchrones régulières, comment y parviendrais-je?Java async socket IO

Répondre

1

NIO2 n'est pas plus rapide que les E/S synchrones. Il permet d'exécuter de nombreuses connexions (des dizaines de milliers) avec quelques threads. Si vous pouvez vous permettre de dépenser un thread pour chaque connexion, utilisez des E/S synchrones - il est plus simple de programmer.

+0

Désolé pour la réponse tardive. Pouvez-vous préciser quand serait-il approprié d'utiliser NIO2? – Jin

+0

En d'autres termes, quand serait-il préférable d'avoir moins de threads avec beaucoup de connexions, vers plus de threads avec une connexion pour chaque thread? – Jin

+0

Les threads consomment beaucoup de mémoire, il n'est donc pas pratique d'avoir plus de 1000 threads sur un ordinateur, et même une machine serveur puissante ne peut supporter plus de 10000 threads à la fois. Ainsi, la consommation de mémoire est le critère principal. Je dirais que pour <100 connexions j'utiliserais certainement un thread par connexion, et pour> 100 je penserais si je peux dépenser tant de mémoire pour des discussions. –