Je suis en train de développer un framework pour créer des applications efficaces dans toutes les tailles. Les applications sont constituées de modules (l'application est également un module) et la performance est importante pour moi. Je sais qu'il existe des cadres pour la modularisation, etc., mais j'avais besoin de mettre en place le mien. Bien que je ai surestimé la performance des modules individuels et les optimisé, la communication entre les objets (et entre les threads) est quelque chose que je ne peux pas décider comment mettre en œuvre. Voici les quelques options je considérais:Communication efficace entre les objets Java
- Pipes NIO
- événements (enregistrement auditeurs)
- files d'attente de transaction dans le contexte de l'application
Ma question est, Lequel d'entre eux est mieux éviter les goulots d'étranglement et les verrous? Ou y a-t-il une alternative que vous pouvez conseiller?
Je ne sais pas pourquoi quelqu'un a voté pour fermer ceci. C'est une vraie question. Il pose des questions sur les compromis entre divers mécanismes de communication Java, et a étudié certaines des alternatives. Semble valide pour moi. –
Les informations sont insuffisantes pour donner des conseils utiles. Ces applications sont-elles dans la même machine virtuelle Java, la même machine, différentes machines sur un réseau local, etc.? Les applications sont-elles transactionnelles? Ont-ils besoin de collaborer dans des transactions? Quelles sont les primitives de communication prises en charge par le framework: RPC, messagerie asynchrone, flux de données? Quelles primitives de synchronisation? –
Je pense que les exemples que j'ai donnés parlent d'eux-mêmes; tuyaux, événements ... ce ne sont que des exemples de communication à double sens. par exemple, supposons que j'ai une classe principale et un objet manager. une communication bidirectionnelle est nécessaire: la classe principale soumet un tampon à l'objet manager pour le traitement et continue l'exécution, lorsque le processus est terminé dans le gestionnaire, le résultat est envoyé à la classe principale. Je peux utiliser des tuyaux pour envoyer et récupérer des données, ou peut notifier des écouteurs enregistrés avec un résultat d'objet d'événement attaché, ou je peux sortir un tampon d'attente de la file d'attente, le traiter et le stocker dans la file d'attente des résultats. –