java event事件_简单的Java Event-事件框架
自己写的一个简单的Java事件框架。目前具备以下功能:
1.通过继承Event类,用户可自定义事件。
2.通过EventService 的fireEvent(Event e) 发出一个事件。
3.通过实现IEventHandler接口,监听某类事件。EventHandler可以动态注册到EventServer,也可以在配置文件中配置。
4.通过实现IEventConsumedCallback接口,在事件被处理后,通知事件发出者。IEventConsumedCallback可在fireEvent时指定,也可不指定。
5.fireEvent 和 Consume Event都是异步进行,Consume Event时采用线程池处理。
类图如下:
测试:
1.自定义Event
import com.lenovo.commonevent.Event;
/**
* Project: CommonEvent
* FileName: TestEvent.java
* @Description: TODO
* @author: jmpp
* Createdate: 2015年3月16日 下午5:57:12
* Copyright: Copyright(C) 2014-2015
* Company Lenovo LTD.
* All rights Reserved, Designed By Lenovo CIC.
*/
/**
* 类 TestEvent 的实现描述:TODO 类实现描述
*
* @author jmpp 2015年3月16日下午5:57:12
*/
public class TestEvent extends Event {
public TestEvent() {
super(TestEvent.class.getSimpleName());
}
}
2.定义一个EventHandler
import java.util.Date;
import com.lenovo.commonevent.Event;
import com.lenovo.commonevent.IEventHandler;
/**
* Project: CommonEvent
* FileName: TestEventHandler.java
* @Description: TODO
* @author: jmpp
* @version V1.0
* Createdate: 2015年3月16日 下午6:00:34
* Copyright: Copyright(C) 2014-2015
* Company Lenovo LTD.
* All rights Reserved, Designed By Lenovo CIC.
*/
/**
* 类 TestEventHandler 的实现描述:TODO 类实现描述
*
* @author jmpp 2015年3月16日下午6:00:34
*/
public class TestEventHandler implements IEventHandler {
/**
* @author jmpp 2015年3月16日下午6:00:48
*/
@Override
public Object onEvent(Event event) {
System.out.println("On event " + event.getId() + " Type:" + event.getType());
return new Date();
}
}
3.定义EventConsumedCallback
import java.util.Date;
import com.lenovo.commonevent.Event;
import com.lenovo.commonevent.EventService;
import com.lenovo.commonevent.IEventConsumedCallback;
/**
* Project: CommonEvent
* FileName: TestEventInvoker.java
* @Description: TODO
* @author: jmpp
* @version V1.0
* Createdate: 2015年3月16日 下午6:03:47
* Copyright: Copyright(C) 2014-2015
* Company Lenovo LTD.
* All rights Reserved, Designed By Lenovo CIC.
*/
/**
* 类 TestEventInvoker 的实现描述:TODO 类实现描述
*
* @author jmpp 2015年3月16日下午6:03:47
*/
public class TestEventInvoker implements IEventConsumedCallback {
/**
* @author jmpp 2015年3月16日下午6:04:02
*/
@SuppressWarnings("deprecation")
@Override
public void onEventFinished(Event event, Object result) {
System.out.println("Event callback " + event.getId() + " at "
+ ((Date) result).toLocaleString());
}
}
4.测试调用 触发事件-〉处理事件(Handle) ->回调Callbackimport java.util.Date;
import com.lenovo.commonevent.Event;
import com.lenovo.commonevent.EventService;
import com.lenovo.commonevent.IEventConsumedCallback;
/**
* Project: CommonEvent
* FileName: TestEventInvoker2.java
* @Description: TODO
* @author: jmpp
* @version V1.0
* Createdate: 2015年3月16日 下午6:03:47
* Copyright: Copyright(C) 2014-2015
* Company Lenovo LTD.
* All rights Reserved, Designed By Lenovo CIC.
*/
/**
* 类 TestEventInvoker2 的实现描述:TODO 类实现描述
*
* @author jmpp 2015年3月16日下午6:03:47
*/
public class TestEventInvoker2 {
public static void main(String args[]) throws Exception {
EventService.init(null);
EventService.registerEventHandler(TestEvent.class.getSimpleName(), new TestEventHandler());
for (int i = 0; i < 10; i++) {
TestEvent event = new TestEvent();
EventService.fireEvent(event, new TestEventInvoker());
}
Thread.sleep(5000);
EventService.stop();
}
}
原文:http://blog.csdn.net/jmppok/article/details/44417275
java event事件_简单的Java Event-事件框架相关推荐
- java ssh客户端_简单的Java SSH客户端
java ssh客户端 可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令: String hello = new Shell.Plain(new SSH("ss ...
- java 静态块初始化_简单了解java中静态初始化块的执行顺序
这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...
- java mapreduce程序_简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行...
[TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...
- java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别
原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...
- java for 死循环_简单的java死循环 java中的死循环问题
java中死循环是什么意思 循环一次不再循环是死循环java中死循环是什么意思 循环一次不再循环是死循环 还是不断循环才是死JAVA中死循环的意思是,不停地循环,不会终止,例如: for (int i ...
- udp java 检测连接_简单的JAVA UDP连接测试
UDP不像TCP那样专门提供了一个SERVER端API,所有的都用DatagramSocket,接受packet数据报.所以说UDP是无连接的,因为所有的链接都是在数据报里,让DatagramSock ...
- java学生通讯录_简单实现Java通讯录系统
本文实例为大家分享了Java通讯录系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; class Person { String name; String n ...
- java进行抽奖_简单实现java抽奖系统
本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public class Us ...
- java 创建水果_简单的java水果商店后台
packagecom.fruit;importjava.util.ArrayList;importjava.util.Scanner;public classFruitshop {public sta ...
最新文章
- python中 doc_python中doc转pdf
- 近段时间学习html和CSS的一些细碎总结
- 2014年:这些词都快被玩坏了
- Jquery 将后台返回的字符串转换成Json格式的数据
- mysql 多表查询实例讲解_mysql多表连接查询实例讲解
- C语言 | 编译与预处理指令(宏定义完整讲解:#define)
- 【深度学习】深度学习中的知识蒸馏技术(上)简介
- semantic ui要装什么才能使用
- 生成二维码的 jQuery 插件:jquery.qrcode.js
- 杨振宁与清华计算机系,他是顶级计算机专家,清华最受欢迎教授,在国际上与杨振宁齐名...
- postgresql查看表的创建者和表的权限
- java整蛊小游戏源码_java小游戏源代码
- UDP读取发送工具类
- 第二章 让你的kali系统变得更好用
- python 读取PDF内容(推荐pdfplumber)
- Unity人物残影实现
- 海量数据荣获华为“中国政企数据存储优秀合作伙伴”金奖
- 关于UE4中VR项目优化小记
- 苹果app退款_你有一笔来自苹果App Store的不明扣款
- 《深度学习推荐系统》