fév.
2008
Développement d'un pool d'objets
Voici un article que j'ai écrit il y a deux ans, dans lequel je vous propose de suivre une démarche progressive pour développer un pool d'objets à la fois thread-safe et générique (au sens Java5). En partant d'une version basique (une simple liste), nous allons l'améliorer et ajouter les fonctionnalités une à une.
Même si l'accent est davantage mis sur la démarche que sur le résultat final, le pool pourra être adapté et utilisé sur des projets réels !
Cet article s'adresse à un public maîtrisant le langage Java. Une bonne connaissance de la version 5 est un plus. La compilation et l'exécution du code source nécessitent la machine virtuelle Java5.
Il arrive que, dans le cadre d'un projet, on ait besoin de pooler des ressources. L'exemple qui vient immédiatement à l'esprit concerne les connexions aux bases de données; mais le système peut se révéler intéressant pour toutes les ressources disponibles en nombre limité ou ayant un coût de création élevé.
Dans sa version la plus basique, un pool est un objet maintenant une simple liste d'instances pré-initialisées de la ressource concernée. Dans sa version la plus complexe, un pool peut proposer des options comme l'ajustement entre ressources pré-initialisées et ressources créées dynamiquement, la mise en place d'un temps maximal pour obtention de la ressource, ou encore une certaine généricité. Mais, par-dessus tout, le pool devra être thread-safe, afin de garantir que les applications y faisant appel ne tombent pas en interblocage (deadlock).
Dans cet article, nous allons développer un pool facilement adaptable à tout projet. La première version sera simple, puis nous y apporterons les améliorations indiquées plus haut, de manière à offrir une grande flexibilité d'utilisation. Pour terminer, nous étudierons comment Java5 nous permet de développer un pool réellement générique, et sous quelles conditions.
L'article et les sources sont placées en annexe.
Commentaires
Merci pour la clarté de cet article.
| ...en comprenant ce que l'on fait !
L'objectif est atteint :)