免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1962 | 回复: 0

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

论坛徽章:
32
IT运维版块每日发帖之星
日期:2016-04-01 06:20:002017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之同曦
日期:2017-02-11 13:43:1415-16赛季CBA联赛之同曦
日期:2017-05-13 19:24:3815-16赛季CBA联赛之上海
日期:2017-07-19 17:38:4415-16赛季CBA联赛之福建
日期:2017-08-02 09:45:3315-16赛季CBA联赛之山东
日期:2017-08-23 17:34:3615-16赛季CBA联赛之上海
日期:2017-11-14 09:20:5015-16赛季CBA联赛之佛山
日期:2017-12-01 10:26:3815-16赛季CBA联赛之吉林
日期:2018-03-30 12:58:43黑曼巴
日期:2018-07-13 09:53:54ChinaUnix元老
日期:2018-08-03 17:26:00
发表于 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);  
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP