我有一個非常複雜的系統(100 +線程),它需要發送電子郵件沒有阻塞。我對該問題的解決方案是實現一個名爲EmailQueueSender
的類,該類在執行開始時啓動,並具有一個ScheduledExecutorService
,該類每500毫秒查看一個內部隊列,如果size()> 0則清空它。什麼設計模式用於線程隊列
雖然這樣做有一個同步的靜態方法,稱爲addEmailToQueue(String[])
它接受包含body,subject..etc作爲數組的電子郵件。該系統確實有效,我的其他線程可以在將郵件添加到隊列之後繼續前進,而不會阻塞,甚至擔心郵件是否成功發送......它似乎有點雜亂......或者駭人聽聞......每個程序員當他們知道自己做錯了什麼或者有更好的方法時,他們會在肚子裏感受到這種感覺。也就是說,有人可以在手腕上打我,並建議一種更有效的方法來實現這一點?
謝謝!
正是我所需要的!已經實施並完美運作。我也改變了電子郵件到一個內部類而不是數組....謝謝你這麼多:) – Submerged 2010-04-30 17:34:38
j.u.c出來在Java 5 – 2010-05-01 02:33:40