欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

asyn4j -- 异步方法调用框架

程序员文章站 2024-01-06 17:01:04
...
asyn4j 是一个java异步方法调用框架,基于消费者与生产者模式。包括了异步方法执行,异步回调执行,异步工作缓存模块.支持Spring.

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



设计图
asyn4j -- 异步方法调用框架
            
    
    博客分类: java 框架Spring多线程JDK设计模式

1.调用普通方法
主方法
        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); 
 
        } 
 
}


2.调用Spring Bean的异步方法
调用 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.使用异步工作缓冲器
AsynService anycService = AsynServiceImpl.getService(300, 3000L, 100, 
                                100); 
                anycService.setWorkQueueFullHandler(new CacheAsynWorkHandler(100)); 
                anycService.init();

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

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



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

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