Java Non-Bloquant et Asynchrone IO avec NIO & NIO.2 (JSR203) - Réacteur/Proactor Implémentations

Donc ici, je suis en train de lire un de mes logiciels préférés des recueils de motifs (Pattern-Oriented Architecture - Modèles pour Simultanées et en Réseau les Objets), en particulier les sections sur Proactor/Réacteur asynchrone IO modèles. Je peux voir comment à l'aide de canaux sélectionnables je peux mettre en œuvre un Réacteur de style asynchrone IO mécanisme assez facile (et ont fait). Mais, je ne vois pas comment je pourrais mettre en œuvre une bonne Proactor mécanisme de blocage non écrit. Profitant d'OS géré non-blocage des fonctions d'écriture.

Fonctionnalités prises en charge par OS appels spécifiques comme GetQueuedCompletionStatus sous win32.

Je ne vois que Java 7 apporte quelques mises à jour de NIO avec asynchrone achèvement des gestionnaires (qui semble être dans la bonne direction). Cela étant dit... étant Donné le manque d'unifiée de la croix-plate-forme de soutien pour les OS géré des opérations asynchrones (plus précisément async écrire) je suis en supposant que c'est un quassy-mise en œuvre, qui est de ne pas utiliser de système d'exploitation natif de soutien.

Donc mes questions sont, est proactor en fonction IO manipulation possible en Java de telle manière qu'il est avantageux de les utiliser pour des scénarios spécifiques; et, si Java NIO prend en charge proactor en fonction IO manipulation (que ce soit dans la version 6 de Java ou Java 7) est OS géré asynchrone IO soutien (c'est à dire l'achèvement des rappels à partir de l'OS) - il utilisé? En outre, si la mise en œuvre est purement dans-VM sont les avantages de performance de si peu que l'utilisation proactive de la gestion des événements n'offre rien de plus qu'un autre (éventuellement plus simple) de la construction de réseau simultanées logiciel de traitement.

Pour quiconque s'intéresse activement à la gestion des événements voici un bon article qui décrit les avantages /inconvénients et une comparaison à la fois traditionnelle de thread par connexion et réactif IO modèles.

  • Si vous voulez vraiment savoir ce que la mise en œuvre ressemble, alors vous pouvez télécharger le code source du JDK 7 et regardez vous-même: openjdk.java.net/projects/jdk7
  • Bon point Jesper. Je vais faire l'effort de le faire bientôt!
InformationsquelleAutor S73417H | 2011-04-03