免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2514 | 回复: 0
打印 上一主题 下一主题

asyn4j -- 异步方法调用框架 <转载> [复制链接]

论坛徽章:
43
15-16赛季CBA联赛之上海
日期:2020-11-04 09:36:5515-16赛季CBA联赛之北控
日期:2018-10-29 18:20:3415-16赛季CBA联赛之北京
日期:2018-10-06 21:39:5715-16赛季CBA联赛之天津
日期:2018-08-09 10:30:41ChinaUnix元老
日期:2018-08-03 17:26:00黑曼巴
日期:2018-07-13 09:53:5415-16赛季CBA联赛之吉林
日期:2018-03-30 12:58:4315-16赛季CBA联赛之佛山
日期:2017-12-01 10:26:3815-16赛季CBA联赛之上海
日期:2017-11-14 09:20:5015-16赛季CBA联赛之江苏
日期:2019-02-20 09:53:3319周年集字徽章-庆
日期:2019-08-27 13:23:2515-16赛季CBA联赛之广夏
日期:2019-09-03 18:29:06
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-15 17:15 |只看该作者 |倒序浏览
asyn4j 是一个java异步方法调用框架,基于消费者与生产者模式。包括了异步方法执行,异步回调执行,异步工作缓存模块.支持Spring.

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



1.调用普通方法
主方法
Java代码
  1.   public static void main(String[] args) {   
  2.             // 初始化异步工作服务   
  3.             AsynService asynService =  AsynServiceImpl.getService(300, 3000L, 3, 2);   
  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代码  收藏代码

    调用 Spring testBean 的 myName 方法   
       applicationContext.xml 加入
  1. <bean id="springBeanUtil" class="com.googlecode.asyn4j.spring.AsynSpringUtil">   
  2.             </bean>   
  3.       
  4.       <bean id="asynService" class="com.googlecode.asyn4j.spring.AsynServiceFactoryBean">   
  5.                        
  6.        </bean>   
  7.       
复制代码
  1. public class TestMain {   
  2.                
  3.             public AsynService asynService;   
  4.       
  5.             public void setAsynService(AsynService asynService) {   
  6.                     this.asynService = asynService;   
  7.             }   
  8.                
  9.             public void maintest(){   
  10.                     for(int i=0;i<10000;i++){   
  11.                             asynService.addWorkWithSpring(new Object[] { "panxiuyan" + i }, "testBean", "myName");   
  12.                     }   
  13.             }   
  14.       
  15.     }  
复制代码
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代码  收藏代码

    默认优先级为5  ,相关API
  1. //目标对象为指定实例   
  2.     public void addWork(Object[] params, Object tagerObject, String method,AsynCallBack asynCallBack, int weight);   
  3.       
  4.     //目标对象为class   
  5.     public void addWork(Object[] params,Class clzss,String method,AsynCallBack asynCallBack,int weight);   
  6.       
  7.     //Spring对应   
  8.     public void addWorkWithSpring(Object[] params,String target,String method,AsynCallBack asynCallBack,int weight);  
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP