而且每一封邮件的内容都不一样,并且还有多个附件。而且在所有邮件发送完成后,要输出有多少成功,有多少失败。
目前我想的是:
1) 仅权用主线程来完成,但是会非常的耗时间。
2) 用多线程,因为邮件的数量太多,我想用线程池来处理。
大家有什么看法?
Thanks
------最佳解决方案--------------------------------------------------------
可以用线程池来做,但线程并不需要太多。
楼主,一般做此类设计前,先判断可能瓶颈发生点,然后考虑对策:
1、邮件服务器的网络连接时延,必然发生:这个可以用多线程来解决;
2、网络带宽限制,发生概率高,比如你只有2M的ADSL:这个软件层面无法解决;
3、CPU限制,发生概率较低:这个可以降低线程数以节省切换代价来解决;
4、内存限制,发生概率较低:这个首先是确保处理逻辑为流式处理,其次是可以降低线程数来节省线程总体内存开销;
5、磁盘IO限制,发生概率极低:基本上磁盘IO远高于你的网络IO。
所以总的来说,可以用多线程解决问题1,不过这不是唯一瓶颈。
------其他解决方案--------------------------------------------------------
3000封电子邮件不算多,不知道你想把处理时间控制在多少?
------其他解决方案--------------------------------------------------------
不会,帮顶!
------其他解决方案--------------------------------------------------------
用一个定长的线程数组,比如20个线程,每个发一些。
------其他解决方案--------------------------------------------------------
帮顶 嘿嘿
------其他解决方案--------------------------------------------------------
越短越好。
------其他解决方案--------------------------------------------------------
Thanks. Anybody else?