J'ai un système très complexe (plus de 100 threads) qui doivent envoyer des emails sans bloquer. Ma solution au problème était d'implémenter une classe appelée EmailQueueSender
qui est démarrée au début de l'exécution et a un ScheduledExecutorService
qui regarde une file d'attente interne toutes les 500ms et si size()> 0 il la vide. Pendant ce temps, il existe une méthode statique synchronisée appelée addEmailToQueue(String[])
qui accepte un corps contenant un email, sujet..etc comme tableau. Le système fonctionne, et mes autres threads peuvent continuer après avoir ajouté leur email à la file sans bloquer ou même s'inquiéter si l'email a été envoyé avec succès ... il semble juste être un peu désordonné ... ou hackish ... Chaque programmeur obtient ce sentiment dans leur estomac quand ils savent qu'ils font quelque chose de mal ou il y a une meilleure façon. Cela dit, quelqu'un peut-il me gifler au poignet et suggérer un moyen plus efficace d'accomplir cela?Quel motif de conception à utiliser pour une file d'attente filetée
Merci!
Juste ce dont j'avais besoin! Déjà mis en œuvre et fonctionne parfaitement. J'ai également changé l'e-mail à une classe interne plutôt que d'un tableau .... Merci beaucoup :) – Submerged
j.u.c est sorti en java 5 –