`
lovexz365
  • 浏览: 108025 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

采用观察者模式监控多线程发送邮件(成功/失败)的状态

    博客分类:
  • java
 
阅读更多
观察者简述:
  观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。


   具体实现方法,可参考  :http://1.todotask.sinaapp.com/?p=8
     


以下代码给出示例:


public class ThreadMail extends Observable implements Runnable {
  private final Log log = LogFactory.getLog(ThreadMail.class);

  public void run(){
    //实现具体逻辑
       .....
  }
}


/****************观察者实现********************/
public class MailObserver implements Observer {
  private IReportService reportService;
  public IReportService getReportService() {
   return reportService;
  }
  public void setReportService(IReportService reportService) {
   this.reportService = reportService;
  }
  @Override
  public void update(Observable o, Object arg) {

  if(arg != null){
    PmsysMessage pmsysMessage  = (PmsysMessage)arg;
     //  re = (IReportService) SpringContextUtil.getBean(“reportService”);
    if(StringUtils.isNotBlank(pmsysMessage.getMessageId())){
     reportService.updateMessage(pmsysMessage);
    }else{
     reportService.insertMessage(pmsysMessage);
    }
   }
  
  }
分享到:
评论

相关推荐

    C#多线程发送邮件,发送工资条

    本项目“C#多线程发送邮件,发送工资条”利用了这一特性来实现高效的邮件批量发送,尤其是在处理如工资条等敏感且大量数据时,多线程的优势尤为明显。 首先,我们需要理解什么是多线程。在单线程应用中,程序执行是...

    Java线程池及观察者模式解决多线程意外死亡重启问题

    观察者模式(Observer Pattern)是一种设计模式,用于在对象之间建立一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,`java.util.Observable`和`java....

    多线程(21)观察者模式1

    在多线程编程中,观察者模式常用于监控线程的状态,以便在特定时刻进行相应的操作。下面将详细解释如何使用观察者模式来跟踪和管理线程的生命周期。 首先,我们需要定义一个表示任务生命周期的枚举类型接口`...

    多线程定时任务邮件服务

    例如,单例模式可用于创建定时任务服务的唯一实例,工厂模式可简化邮件服务对象的创建,观察者模式可用于监听数据库变化并触发邮件发送等。 7. **测试与调试**: 在开发过程中,单元测试和集成测试是必不可少的,...

    易语言多线程监控进程

    我们聚焦于"易语言多线程监控进程"这个技术点,将深入探讨如何使用易语言实现多线程来监控系统中的进程,并获取其状态,以及如何处理相关的操作,如进入、退出和关闭线程,以及在特定事件发生时发送邮件通知。...

    不是多线程的群发邮件

    6. **智能重试机制**:当邮件发送失败时,根据错误类型和频率决定是否重试,以及重试的间隔和次数,这在不使用多线程的情况下也能提高邮件发送的成功率。 7. **优化的邮件构建和编码**:预处理邮件内容,如合并变量...

    java 子线程通过观察者模式通知主线程

    在多线程环境下,观察者模式可以被巧妙地应用于子线程通知主线程的情况。 观察者模式的核心思想是定义一个一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,`...

    C# UDP多线程发送接收

    本教程将重点讲解如何利用C#实现多线程的UDP发送与接收。 一、UDP基础知识 1. UDP协议特点:无连接、不可靠、无拥塞控制,传输速度快。 2. UDP报文结构:包括源端口号、目标端口号、长度和校验和字段。 3. 使用C#的...

    c++ smpt发送邮件类 ssl/tls

    7. **多线程/异步处理**:如果需要在程序运行时同时处理多个邮件发送,可能需要利用多线程或异步I/O。 8. **测试**:在实际环境中,需要测试邮件是否成功发送,内容是否正确,以及是否能通过不同的邮件服务提供商...

    socket 多线程 例程 非阻塞模式

    这个示例中的源代码包含了客户端和服务器端的实现,通过运行这些代码,你可以实际观察到多线程非阻塞模式下的socket通信。客户端发送数据到服务器,而服务器接收并回应,整个过程是并行且高效的。 总之,"socket多...

    email多线程异步发送设计文档

    因此,采用多线程异步发送邮件可以显著提升效率,避免阻塞主线程,使得系统资源得到更有效的利用。本文将深入探讨如何设计一个基于多线程和异步操作的邮件发送系统。 **一、多线程技术** 1. **线程概念**:线程是...

    观察者模式下载3完成篇

    观察者模式是设计模式中的一种行为模式,它允许一个对象在其状态改变时通知其他对象,这些对象被称为“观察者”,它们订阅了这个对象并自动接收状态更新。在Android开发中,观察者模式常用于实现事件驱动编程,例如...

    NetMQ例子,多线程模式,推拉模式等

    1. **多线程模式**:在多线程编程中,多个线程可以并行执行不同的任务,从而提高程序的执行效率。NetMQ支持多线程环境,这意味着在同一应用程序中,你可以创建多个线程来分别处理消息的发送、接收或处理。这尤其适用...

    c# 程序自动发邮箱 多线程

    C# 自动发邮箱 多线程 这次采用的是MS 的API ,发送效率更快,而且用的是多线程的,不影响页面的响应; 操作:1.EmailHandler 更改里面的发送参数和接收参数 2.运行 SendMail.aspx 页面 呵呵,现在看一下接受邮箱了, ...

    Java多线程编程实战指南 设计模式篇

    例如,单例模式在多线程环境中需要考虑线程安全,可以采用双检锁/双重校验锁定(DCL)或者静态内部类来实现线程安全的单例。工厂模式可以帮助隐藏线程创建的复杂性,而观察者模式则可用于实现事件驱动的异步处理。 ...

    观察者模式下载1起始篇

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个“观察者模式下载1起始篇”中,...

    基于TCP/IP的Socket多线程通信(服务器和客户端)

    - **发送/接收线程**:连接成功后,客户端可以创建多个线程来发送或接收数据,这样可以同时进行数据的发送和接收,提高效率。 6. **多线程通信中的同步与互斥**:为了防止线程间的资源竞争,需要使用锁(如互斥量...

    c#多线程tcp高并发林业监测硬件设备模拟器.zip

    c#多线程tcp高并发模拟器 可以同时启动几千条发送进程和接收进程 可以模拟硬件发送数据 一、通信协议 1 设备与服务器之间使用TCP/IP通信。 2 当设备与服务器之间建立连接后,设备应在60秒内将所有数据...

    《当析构函数遇到多线程》PPT

    在多线程环境中实现线程安全的观察者模式是一项挑战。通常情况下,观察者模式涉及到观察者列表的维护和通知机制,这需要特别小心以避免竞态条件。 **借助shared_ptr和weak_ptr实现线程安全**: - **观察者列表的...

    基于Freemarker模板技术的邮件发送模块设计

    采用javamail实现的通用邮件发送模块,邮件内容采用Freemarker技术实现,多线程实现邮件发送,观察者模式来定制邮件的错误处理,设计思路参考作者博客 http://blog.csdn.net/crazycoder2010/article/details/6629076

Global site tag (gtag.js) - Google Analytics