Quel est le problème de spécifier une taille à l'initialisation de ta Queue ?
Si tu veux vraiment ne pas avoir à préciser de taille, tu as plusieurs solutions :
- Choisir une implémentation de BlockingQueue qui n'a pas de taille spécifique
- DelayQueue : Tu as une contrainte supplémentaire qui consiste a ce que les éléments de ta queue implémente l'interface Delayed afin qu'il puisse être supprimé automatiquement au bout d'un certain temps.
- LinkedBlockingQueue : Taille max fixé à Integer.MAX_VALUE. Tu as le temps de voir venir mais ce n'est pas impossible d'atteindre la limite.
- SynchronousQueue : L'ajout d'un element est bloquant si la queue n'est pas vide (un peu comme si la taille était limité a 1)
- Créer toi même une implémentation de BlockingQueue qui n'aura pas de limite. Mais tu risque d'avoir le problème dont tchize_ parlait : si la queue ne fait que grossir, tu va saturer la mémoire et tu risque d'aller droit dans le mur.
Personnellement, je te conseillerai l'une des deux premières implémentations si tu ne veux pas préciser de taille.
Le choix dépend beaucoup de si tu peux te permettre de perdre les "vieux" éléments qui traîne dans la queue ou pas.
Partager