asyn4j -- 异步方法调用框架

来源:互联网 发布:淘宝库存手表是真是假 编辑:程序博客网 时间:2024/05/24 03:55
asyn4j 是一个java异步方法调用框架,基于消费者与生产者模式。包括了异步方法执行,异步回调执行,异步工作缓存模块.支持Spring. 

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



设计图 
 

1.调用普通方法 
主方法 
Java代码  收藏代码
  1. public static void main(String[] args) {   
  2.         // 初始化异步工作服务   
  3.         AsynService asynService =  AsynServiceImpl.getService(300, 3000L, 32);   
  4.         // 启动服务   
  5.         asynService.init();   
  6.         // 异步回调对象   
  7.         AsynCallBack back = new TargetBack();   
  8.         for (int i = 0; i < 1000; i++) {   
  9.                 // 添加加异步工作- TargetService 的 test 方法 ,方法参数 asynej+ i   
  10.                 asynService.addWork(new Object[] { "asyn4j" + i },   
  11.                                 TargetService.class"test"new TargetBack());   
  12.                 //实例化目标对象再调用   
  13.                // TargetService targetService = new TargetService ();   
  14.                //asynService.addWork(new Object[] { "asyn4j" + i },   
  15.         //              targetService , "test", new TargetBack());   
  16.                   
  17.         }   
  18. }  


异步调用对象 
Java代码  收藏代码
  1. public class TargetService {   
  2.         public String test(String name){   
  3.                 System.out.println(name +" test is execute!");   
  4.                 return name;   
  5.         }   
  6.    
  7. }  



回调方法 
Java代码  收藏代码
  1. //回调需继承AsynCallBack抽象类   
  2. public class TargetBack extends AsynCallBack {   
  3.    
  4.         @Override   
  5.         public void doNotify() {   
  6.                 //输出异步方法调用返回结果   
  7.                 System.out.println(this.methodResult);   
  8.    
  9.         }   
  10.    
  11. }  


2.调用Spring Bean的异步方法
Java代码  收藏代码
  1. 调用 Spring testBean 的 myName 方法   
  2.    applicationContext.xml 加入   
  3.     <bean id="springBeanUtil" class="com.googlecode.asyn4j.spring.AsynSpringUtil">   
  4.         </bean>   
  5.    
  6.   <bean id="asynService" class="com.googlecode.asyn4j.spring.AsynServiceFactoryBean">   
  7.                    
  8.    </bean>   
  9.    
  10.    
  11.   public class TestMain {   
  12.            
  13.         public AsynService asynService;   
  14.    
  15.         public void setAsynService(AsynService asynService) {   
  16.                 this.asynService = asynService;   
  17.         }   
  18.            
  19.         public void maintest(){   
  20.                 for(int i=0;i<10000;i++){   
  21.                         asynService.addWorkWithSpring(new Object[] { "panxiuyan" + i }, "testBean""myName");   
  22.                 }   
  23.         }   
  24.    
  25. }  


3.使用异步工作缓冲器 
Java代码  收藏代码
  1. AsynService anycService = AsynServiceImpl.getService(300, 3000L, 100,   
  2.                                 100);   
  3.                 anycService.setWorkQueueFullHandler(new CacheAsynWorkHandler(100));   
  4.                 anycService.init();  

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

4.异步工作优级
Java代码  收藏代码
  1. 默认优先级为5  ,相关API   
  2. //目标对象为指定实例   
  3. public void addWork(Object[] params, Object tagerObject, String method,AsynCallBack asynCallBack, int weight);   
  4.    
  5. //目标对象为class   
  6. public void addWork(Object[] params,Class clzss,String method,AsynCallBack asynCallBack,int weight);   
  7.    
  8. //Spring对应   
  9. public void addWorkWithSpring(Object[] params,String target,String method,AsynCallBack asynCallBack,int weight);  



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

项目地址:http://asyn4j.googlecode.com 
源码SVN : http://asyn4j.googlecode.com/svn/branches/asyn4j 
WIKI: http://code.google.com/p/asyn4j/wiki/user_guide 
0 0