当前位置: 代码迷 >> J2SE >> Java 发 1000 或 3000 封 email 的解决方案,该怎么处理
  详细解决方案

Java 发 1000 或 3000 封 email 的解决方案,该怎么处理

热度:6191   发布时间:2013-02-25 00:00:00.0
Java 发 1000 或 3000 封 email 的解决方案
而且每一封邮件的内容都不一样,并且还有多个附件。而且在所有邮件发送完成后,要输出有多少成功,有多少失败。

目前我想的是:

1) 仅权用主线程来完成,但是会非常的耗时间。

2) 用多线程,因为邮件的数量太多,我想用线程池来处理。

大家有什么看法?


Thanks
------最佳解决方案--------------------------------------------------------
可以用线程池来做,但线程并不需要太多。

楼主,一般做此类设计前,先判断可能瓶颈发生点,然后考虑对策:
1、邮件服务器的网络连接时延,必然发生:这个可以用多线程来解决;
2、网络带宽限制,发生概率高,比如你只有2M的ADSL:这个软件层面无法解决;
3、CPU限制,发生概率较低:这个可以降低线程数以节省切换代价来解决;
4、内存限制,发生概率较低:这个首先是确保处理逻辑为流式处理,其次是可以降低线程数来节省线程总体内存开销;
5、磁盘IO限制,发生概率极低:基本上磁盘IO远高于你的网络IO。

所以总的来说,可以用多线程解决问题1,不过这不是唯一瓶颈。
------其他解决方案--------------------------------------------------------
3000封电子邮件不算多,不知道你想把处理时间控制在多少?
------其他解决方案--------------------------------------------------------
不会,帮顶!
------其他解决方案--------------------------------------------------------
用一个定长的线程数组,比如20个线程,每个发一些。
------其他解决方案--------------------------------------------------------
引用:
Thanks. Anybody else?

帮顶  嘿嘿 
------其他解决方案--------------------------------------------------------
引用:
而且每一封邮件的内容都不一样,并且还有多个附件。而且在所有邮件发送完成后,要输出有多少成功,有多少失败。

目前我想的是:

1) 仅权用主线程来完成,但是会非常的耗时间。

2) 用多线程,因为邮件的数量太多,我想用线程池来处理。

大家有什么看法?


Thanks

越短越好。
------其他解决方案--------------------------------------------------------
Thanks. Anybody else?
引用:
可以用线程池来做,但线程并不需要太多。

楼主,一般做此类设计前,先判断可能瓶颈发生点,然后考虑对策:
1、邮件服务器的网络连接时延,必然发生:这个可以用多线程来解决;
2、网络带宽限制,发生概率高,比如你只有2M的ADSL:这个软件层面无法解决;
3、CPU限制,发生概率较低:这个可以降低线程数以节省切换代价来解决;
4、内存限制,发生概率较低:这个首先是确……
  相关解决方案