У меня очень сложная система (более 100 потоков), которым необходимо отправлять электронную почту без блокировки. Мое решение проблемы состояло в том, чтобы реализовать класс EmailQueueSender
, который запускается в начале выполнения, и имеет ScheduledExecutorService
, который смотрит на внутреннюю очередь каждые 500 мс, и если size()> 0, он опустошает ее.Какой шаблон дизайна использовать для поточной очереди
Хотя это происходит, существует синхронизированный статический метод, называемый addEmailToQueue(String[])
, который принимает сообщение, содержащее тело, subject..etc как массив. Система работает, и мои другие потоки могут двигаться дальше после добавления их электронной почты в очередь, не блокируя или даже беспокоясь, если письмо было отправлено успешно ... это просто кажется немного грязным ... или взломать ... Каждый программист получает это чувство в животе, когда они знают, что они делают что-то неправильно или есть лучший способ. Тем не менее, может кто-то ударить меня по запястью и предложить более эффективный способ сделать это?
Спасибо!
Только то, что мне нужно! Уже реализованы и работают отлично. Я также изменил электронную почту на внутренний класс, а не на массив .... Большое вам спасибо :) – Submerged
j.u.c вышел в java 5 –