一种以观察者模式发送大量邮件的方法

文档序号:7803909阅读:123来源:国知局
一种以观察者模式发送大量邮件的方法
【专利摘要】本发明提供一种以观察者模式发送大量邮件的方法,其实现过程为:构建邮件发送组件:该组件包括线程同步的队列对象、线程通信模块、线程发送模块、数据收集模块;邮件发送请求到达时,把邮件信息及时的存储到内存中,然后反馈成功信号给邮件发送者,完成请求的提交;邮件信息在内存中有序排列,并由线程发送模块依序发送;当物理内存中的有序的邮件全部发送完毕后,发现邮件队列对象内无邮件对象时,通知线程通信模块,工作线程进入休眠状态;当有数据被提交时,线程被线程通信模块唤醒,进入工作状态。该一种以观察者模式发送大量邮件的方法和现有技术相比,达到大量邮件即时存储、有序发送、程序工作线程智能休眠的效果,实用性强。
【专利说明】一种以观察者模式发送大量邮件的方法
【技术领域】
[0001]本发明涉及云计算【技术领域】,具体的说是一种降低资源占用率、按序发送、以观察者模式发送大量邮件的方法。
【背景技术】
[0002]云计算是计算机发展历史的有一个里程碑的发展阶段,在这一阶段中,物理资源将大量以数据中心的形式出现,由专业的数据中心企业从事物理资源的管理和规化。资源需求方,不再需要自己构建大成本的数据中心,而是向专业的数据中心租借计算资源。
[0003]物理资源的集中,带来的是海量数据的应用,也带来了更为频繁的交互。作为交互通用模式之一的的邮件通知和告警,首当其冲。
[0004]在现有技术中,大量邮件发送过程都是单线程、队列式同步发送,占用资源大,负载和耦合性高,发送效率不熬。采用观察者模式发送邮件,可以使内存、CPU等物理资源消耗降低。异步操作降低了用户等待时间,提高用户的体验。
[0005]为了提高发送效率,降低资源占用,现提供一种以观察者模式发送大量邮件的方法。

【发明内容】

[0006]本发明的技术任务是解决现有技术的不足,提供一种降低资源占用率、以观察者模式发送大量邮件的方法。
[0007]本发明的技术方案是按以下方式实现的,该一种以观察者模式发送大量邮件的方法,其实现过程为:
一、构建邮件发送组件:
该组件包括线程同步的队列对象、线程通信模块、线程发送模块、数据收集模块,其
中:
队列对象用于存储邮件信息。
[0008]线程通信模块作为观察者角色,监控add邮件的动作,唤醒发送线程。
[0009]线程发送模块负责调用邮件发送组件的通信程序,进行发送。
[0010]数据收集模块用于add邮件数据到邮件队列对象中。
[0011]二、完成邮件发送:
I)邮件发送请求到达时,把邮件信息及时的存储到内存中,即队列对象中,然后反馈成功信号给邮件发送者,完成请求的提交。
[0012]2)邮件信息在内存中有序排列,并由线程发送模块依序发送。
[0013]3)当物理内存中的有序的邮件全部发送完毕后,发现邮件队列对象内无邮件对象时,通知线程通信模块,工作线程进入休眠状态。
[0014]4)当有数据被提交时,线程被线程通信模块唤醒,进入工作状态。
[0015]所述步骤I)中邮件存储过程为:线程收集模块把页面的所有的邮件数据收集,传输给后台;后台通过线程间相互通信的方式,实现数据收集和数据发送过程中同步和智能唤醒。
[0016]进一步的,该邮件存储的详细过程如下所述:先将各个线程中的邮件信息add到同一个Queue对象中,Queue是线程同步的。
[0017]然后由同步块控制,同时,发送邮件的类对象控制通信锁,形成发送线程和各请求线程间的通信。
[0018]所述步骤2)中邮件发送过程为:后台接收到的数据由一个队列的数据结构对象承载,由于队列先进先出的特性,邮件被排列成一队,等待线程发送模块的发送。
[0019]所述步骤3)、步骤4)的操作过程为:当每条邮件添加后,都由线程通信模块执行唤醒线程的操作:后台线程如果在工作,则继续工作,如果在等待,则进入工作状态。
[0020]后台线程被发现没有邮件队列时,再次进入等待状态。
[0021]进一步的,所述步骤3)、步骤4)的详细过程为:
当请求线程add完成后,调用notify O方法,唤醒所有发送线程中的某一个,被唤醒的发送线程在得知有新的邮件需要发送后,进入工作状态,当邮件全部被发送完毕后,唤醒的线程又重新进入休眠状态。
[0022]大量邮件需要发送时,多个沉睡的线程被依次唤醒,进入工作状态完成上述步骤中的发送过程。
[0023]前台的数据收集模块由邮件发送请求的线程与队列对象构成;后台的发送模块由一个或者多个发送线程构成;线程通信模块由发送类的类对象担当观察者的角色,当发现有邮件需要发送时,唤醒工作线程,否则不唤醒。
[0024]本发明与现有技术相比所产生的有益效果是:
本发明的一种以观察者模式发送大量邮件的方法通过邮件发送组件以观察者模式发送大量邮件策略,实现大量邮件的发送,同时采用观察者模式的程序设计,能达到大量邮件即时存储、有序发送、程序工作线程智能休眠的效果,降低邮件发送的负载度和耦合度,提高发送效率,同时节省内存、CPU等物理资源的消耗,节能减排,实用性强,易于推广。
【专利附图】

【附图说明】
[0025]附图1为本发明的实现示意图。
【具体实施方式】
[0026]下面结合附图对本发明的一种以观察者模式发送大量邮件的方法作以下详细说明。
[0027]本发明为实现大量邮件的即时存储和有序发送,如附图1所示,现提供一种以观察者模式发送大量邮件的方法,本方法是以后台智能休眠的工作线程为基础,以内存队列对邮件信息进行存储为前提,通过线程通信的方式,灵活高效的发送大量的邮件信息。其具体实现过程为:
一、构建邮件发送组件:
该组件包括线程同步的队列对象、线程通信模块、线程发送模块、数据收集模块,其
中: 线程同步的队列对象即邮件队列对象,用于存储邮件信息。
[0028]线程通信模块作为观察者角色,监控add邮件的动作,唤醒发送线程,在此用模块A表示。
[0029]线程发送模块可以是多个线程,负责调用邮件发送组件的通信程序,进行发送,在此用模块B表示。
[0030]数据收集模块可以是多个线程,用于add邮件数据到邮件队列对象中,在此用模块C表示。
[0031]二、完成邮件发送:该发送过程为模块B发送add邮件数据,通过模块A唤醒模块C。模块C开始工作,发现邮件队列对象内无邮件对象时,通知模块A,并进入wait状态。
[0032]更为详细的,该邮件发送过程如下所述:
I)邮件发送请求到达时,把邮件信息及时的存储到内存中,即队列对象中,然后反馈成功信号给邮件发送者,完成请求的提交。
[0033]线程收集模块把页面的所有的邮件数据收集,传输给后台;后台通过线程间相互通信的方式,实现数据收集和数据发送过程中同步和智能唤醒。
[0034]2)邮件信息在内存中有序排列,并由线程发送模块依序发送。
[0035]后台接收到的数据由一个队列的数据结构对象承载,由于队列先进先出的特性,邮件被排列成一队,等待线程发送模块的发送。
[0036]3)当物理内存中的有序的邮件全部发送完毕后,发现邮件队列对象内无邮件对象时,通知线程通信模块,工作线程进入休眠状态。
[0037]4)当有数据被提交时,线程被线程通信模块唤醒,进入工作状态。
[0038]当每条邮件添加后,都由线程通信模块执行唤醒线程的操作:后台线程如果在工作,则继续工作,如果在等待,则进入工作状态;后台线程被发现没有邮件队列时,再次进入等待状态。
[0039]前台的数据收集模块由邮件发送请求的线程与队列对象构成;后台的发送模块由一个或者多个发送线程构成;线程通信模块由发送类的类对象担当观察者的角色,当发现有邮件需要发送时,唤醒工作线程,否则不唤醒。
[0040]实施例:
先将各个线程中的邮件信息(简称sms) add到同一个Queue对象中,Queue是线程同步的,保证在多个线程同时add时候,不会出现数据错误。
[0041]然后由同步块synchronized控制,同时,发送邮件的类对象控制通信锁,形成发送线程和各请求线程间的通信。
[0042]当请求线程add完成后,调用notify O方法,唤醒所有发送线程中的某一个,被唤醒的发送线程在得知有“新”的邮件需要发送后,进入工作状态,当邮件全部被发送完毕后,唤醒的线程又重新进入休眠状态。
[0043]大量邮件需要发送时,多个沉睡的线程会被依次唤醒,进入工作状态。
[0044]以上所述仅为本发明的实施例而已,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种以观察者模式发送大量邮件的方法,其特征在于其实现过程为: 一、构建邮件发送组件: 该组件包括线程同步的队列对象、线程通信模块、线程发送模块、数据收集模块,其中: 队列对象用于存储邮件信息; 线程通信模块作为观察者角色,监控add邮件的动作,唤醒发送线程; 线程发送模块负责调用邮件发送组件的通信程序,进行发送; 数据收集模块用于add邮件数据到邮件队列对象中; 二、完成邮件发送: 1)邮件发送请求到达时,把邮件信息及时的存储到内存中,即队列对象中,然后反馈成功信号给邮件发送者,完成请求的提交; 2)邮件信息在内存中有序排列,并由线程发送模块依序发送; 3)当物理内存中的有序的邮件全部发送完毕后,发现邮件队列对象内无邮件对象时,通知线程通信模块,工作线程进入休眠状态; 4)当有数据被提交时,线程被线程通信模块唤醒,进入工作状态。
2.根据权利要求1所述的一种以观察者模式发送大量邮件的方法,其特征在于:所述步骤I)中邮件存储过程为:线程收集模块把页面的所有的邮件数据收集,传输给后台;后台通过线程间相互通信的方式,实现数据收集和数据发送过程中同步和智能唤醒。
3.根据权利要求2所述的一种以观察者模式发送大量邮件的方法,其特征在于:所述步骤I)中邮件存储的详细过程为:先将各个线程中的邮件信息add到同一个Queue对象中,Queue是线程同步的;然后由同步块控制,同时,发送邮件的类对象控制通信锁,形成发送线程和各请求线程间的通信。
4.根据权利要求1所述的一种以观察者模式发送大量邮件的方法,其特征在于:所述步骤2)中邮件发送过程为:后台接收到的数据由一个队列的数据结构对象承载,由于队列先进先出的特性,邮件被排列成一队,等待线程发送模块的发送。
5.根据权利要求1所述的一种以观察者模式发送大量邮件的方法,其特征在于:所述步骤3)、步骤4)的操作过程为:当每条邮件添加后,都由线程通信模块执行唤醒线程的操作:后台线程如果在工作,则继续工作,如果在等待,则进入工作状态;后台线程被发现没有邮件队列时,再次进入等待状态。
6.根据权利要求5所述的一种以观察者模式发送大量邮件的方法,其特征在于:所述步骤3)、步骤4)的详细过程为:当请求线程add完成后,调用notify O方法,唤醒所有发送线程中的某一个,被唤醒的发送线程在得知有新的邮件需要发送后,进入工作状态,当邮件全部被发送完毕后,唤醒的线程又重新进入休眠状态; 大量邮件需要发送时,多个沉睡的线程被依次唤醒,进入工作状态完成上述步骤中的发送过程。
7.根据权利要求1?6中任一所述的一种以观察者模式发送大量邮件的方法,其特征在于:前台的数据收集模块由邮件发送请求的线程与队列对象构成;后台的发送模块由一个或者多个发送线程构成;线程通信模块由发送类的类对象担当观察者的角色,当发现有邮件需要发送时,唤醒工作线程,否则不唤醒。
【文档编号】H04L29/08GK103973549SQ201410206265
【公开日】2014年8月6日 申请日期:2014年5月16日 优先权日:2014年5月16日
【发明者】李新虎, 于辉, 刘俊朋, 郭锋, 刘正伟 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1