- 论坛徽章:
- 43
|
asyn4j 是一个java异步方法调用框架,基于消费者与生产者模式。包括了异步方法执行,异步回调执行,异步工作缓存模块.支持Spring.
让我们写异步方法不再写很多的相关多线程代码。用asyn4j轻松搞定异步方法调用.提高程序的响应能力.
![]()
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);
复制代码 |
|