asyn4j -- 异步方法调用框架

asyn4j 是一个java异步方法调用框架,基于消费者与生产者模式。包括了异步方法执行,异步回调执行,异步工作缓存模块.支持Spring.

让我们写异步方法不再写很多的相关多线程代码。用asyn4j轻松搞定异步方法调用.提高程序的响应能力.


设计图
[img]http://dl.iteye.com/upload/picture/pic/70272/2688411d-a56d-35c3-9183-83cfc6a87659.jpg[/img]

[b]1.调用普通方法[/b]
主方法
        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());

}
}


异步调用对象
public class TargetService { 
public String test(String name){
System.out.println(name +" test is execute!");
return name;
}

}



回调方法
//回调需继承AsynCallBack抽象类 
public class TargetBack extends AsynCallBack {

@Override
public void doNotify() {
//输出异步方法调用返回结果
System.out.println(this.methodResult);

}

}


[b]2.调用Spring Bean的异步方法[/b]
调用 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");
}
}

}


[b]3.使用异步工作缓冲器[/b]
AsynService anycService = AsynServiceImpl.getService(300, 3000L, 100, 
100);
anycService.setWorkQueueFullHandler(new CacheAsynWorkHandler(100));
anycService.init();

当工作队列中的工作超过300个时,异步工作将由CacheAsynWorkHandler?处理;

[b]4.异步工作优级[/b]
默认优先级为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);



看到这里感兴趣了吗?想了解更多查看如下资料或站内信联络.

项目地址:[url]http://asyn4j.googlecode.com[/url]
源码SVN : http://asyn4j.googlecode.com/svn/branches/asyn4j
WIKI: [url]http://code.google.com/p/asyn4j/wiki/user_guide[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值