asyn4j -- 异步方法调用框架 <转载>
asyn4j 是一个java异步方法调用框架,基于消费者与生产者模式。包括了异步方法执行,异步回调执行,异步工作缓存模块.支持Spring.让我们写异步方法不再写很多的相关多线程代码。用asyn4j轻松搞定异步方法调用.提高程序的响应能力.
http://dl.iteye.com/upload/picture/pic/70272/2688411d-a56d-35c3-9183-83cfc6a87659.jpg
1.调用普通方法
主方法
Java代码public static void main(String[] args) {
// 初始化异步工作服务
AsynService asynService =AsynServiceImpl.getService(300, 3000L, 3, 2);
// 启动服务
asynService.init();
// 异步回调对象
AsynCallBack back = new TargetBack();
for (int i = 0; i < 1000; i++) {
// 添加加异步工作- TargetService 的 test 方法 ,方法参数 asynej+ i
asynService.addWork(new Object[] { "asyn4j" + i },
TargetService.class, "test", new TargetBack());
//实例化目标对象再调用
// TargetService targetService = new TargetService ();
//asynService.addWork(new Object[] { "asyn4j" + i },
// targetService , "test", new TargetBack());
}
}
异步调用对象
Java代码 public class TargetService {
public String test(String name){
System.out.println(name +" test is execute!");
return name;
}
}
回调方法
Java代码//回调需继承AsynCallBack抽象类
public class TargetBack extends AsynCallBack {
@Override
public void doNotify() {
//输出异步方法调用返回结果
System.out.println(this.methodResult);
}
}2.调用Spring Bean的异步方法
Java代码收藏代码
调用 Spring testBean 的 myName 方法
applicationContext.xml 加入 <bean id="springBeanUtil" class="com.googlecode.asyn4j.spring.AsynSpringUtil">
</bean>
<bean id="asynService" class="com.googlecode.asyn4j.spring.AsynServiceFactoryBean">
</bean>
public class TestMain {
public AsynService asynService;
public void setAsynService(AsynService asynService) {
this.asynService = asynService;
}
public void maintest(){
for(int i=0;i<10000;i++){
asynService.addWorkWithSpring(new Object[] { "panxiuyan" + i }, "testBean", "myName");
}
}
}3.使用异步工作缓冲器
Java代码收藏代码 AsynService anycService = AsynServiceImpl.getService(300, 3000L, 100,
100);
anycService.setWorkQueueFullHandler(new CacheAsynWorkHandler(100));
anycService.init();当工作队列中的工作超过300个时,异步工作将由CacheAsynWorkHandler?处理;
4.异步工作优级
Java代码收藏代码
默认优先级为5,相关API //目标对象为指定实例
public void addWork(Object[] params, Object tagerObject, String method,AsynCallBack asynCallBack, int weight);
//目标对象为class
public void addWork(Object[] params,Class clzss,String method,AsynCallBack asynCallBack,int weight);
//Spring对应
public void addWorkWithSpring(Object[] params,String target,String method,AsynCallBack asynCallBack,int weight);
页:
[1]