Sub*_*ged 3 java queue multithreading
我有一个非常复杂的系统(100多个线程)需要发送电子邮件而不会阻塞.我对这个问题的解决方案是实现一个名为的类EmailQueueSender,它在执行开始时启动,并且ScheduledExecutorService每隔500毫秒查看一个内部队列,如果size()> 0则清空它.
在这种情况下,有一个同步的静态方法addEmailToQueue(String[]),它接受一个包含body的主题,subject..etc作为一个数组.系统确实有效,我的其他线程可以继续将他们的电子邮件添加到队列中而不会阻塞,甚至担心电子邮件是否成功发送...它似乎有点乱......或者说是hackish ...每个程序员当他们知道自己做错了什么或者有更好的方法时,会在胃里感受到这种感觉.也就是说,有人可以打我的手腕,并提出一个更有效的方法来实现这一目标吗?
谢谢!
http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ThreadPoolExecutor.html
仅此课程可能会处理您需要的大部分内容.只需将发送代码放在runnable中,然后使用execute方法添加它.getQueue方法将允许您检索当前的等待项列表,以便您可以在重新启动发送方服务时保存它而不会丢失电子邮件
| 归档时间: |
|
| 查看次数: |
2959 次 |
| 最近记录: |