gpt4 book ai didi

java - 线程队列使用什么设计模式

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:03:18 26 4
gpt4 key购买 nike

我有一个非常复杂的系统(100 多个线程),需要在不阻塞的情况下发送电子邮件。我对这个问题的解决方案是实现一个名为 EmailQueueSender 的类,它在执行开始时启动,并且有一个 ScheduledExecutorService 每 500 毫秒检查一次内部队列,如果大小( )>0 它清空它。

当这发生时,有一个名为 addEmailToQueue(String[]) 的同步静态方法,它接受包含正文、主题等的电子邮件作为数组。该系统确实有效,我的其他线程可以在将他们的电子邮件添加到队列后继续前进,而不会阻塞甚至担心电子邮件是否已成功发送……它似乎有点困惑……或骇人听闻……每个程序员当他们知道自己做错了什么或有更好的方法时,他们的胃里就会有这种感觉。那就是说,有人可以拍拍我的手腕并建议一种更有效的方法来完成此任务吗?

谢谢!

最佳答案

http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ThreadPoolExecutor.html

这个类可能会处理您需要的大部分内容。只需将发送代码放入可运行的程序中,然后使用 execute 方法添加即可。getQueue 方法将允许您检索当前的等待项目列表,以便您可以在重新启动发件人服务时保存它而不会丢失电子邮件

关于java - 线程队列使用什么设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2745580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com