Question

J'ai un JAR de base qui fournit des fonctionnalités et donc utilisé dans beaucoup d'autres applications aussi bien - les applications de bureau, les applications Web, etc. Maintenant, ce JAR de base maintient un pool d'objets contenant des objets qui sont informatiquement coûteux à créer. Le pool d'objets est de taille fixe et donc je crée tous les objets à la fois et remplir la piscine. Ce que je veux faire est que chaque fois que l'application en utilisant mon JAR est chargé, le pool d'objets est créé sans l'application connaître les détails d'une telle piscine. Et que même si le temps de chargement de l'application prendra un coup à cause de la population de la piscine, mais une fois que l'application est passé ce stade, il ne devrait pas être plus de performance due à la création de ces objets lourds plus tard.

Y at-il un moyen d'y parvenir?

Était-ce utile?

La solution

La seule façon de faire quelque chose comme ça, en dehors d'ajouter des crochets explicites dans les applications client pour appeler votre logique de démarrage est d'ajouter initialiseurs statiques à vos classes pour construire votre piscine.

Un initialiseur statique est exécutée lorsque votre classe est d'abord chargée par la machine virtuelle Java (avant tout code dans votre classe invoquée), ce qui est tout à fait déterministe, mais est généralement quand un chemin de code faisant référence à votre classe est le premier hit.

Je recommande fournir une sorte de crochets dans votre logique de démarrage pour les applications clientes d'invoquer, de cette façon, ils peuvent contrôler avec précision ce genre de chose plutôt que d'avoir votre démarrage course logique à un moment imprévisible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top