- 浏览: 280050 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
梦醒无尘:
异步处理框架已经用到项目上,感谢你利用休息时间创造出一款舒服的 ...
asyn4j 1.2 发布 -
xiaokang1582830:
有一点没有考虑到的就是是否可以提供目前已经在调用的calss和 ...
asyn4j -- 异步方法调用框架 -
snowolf:
记得曾经实现过iBatis+EhCache,实现了一个iBat ...
让ibatis 支持 memcached -
bsspirit:
很好,很好!!
java annotation 实例 -
ij仔:
...
Statement,PreparedStatement区别
asyn4j 是一个java异步方法调用框架,基于消费者与生产者模式。包括了异步方法执行,异步回调执行,异步工作缓存模块.支持Spring.
让我们写异步方法不再写很多的相关多线程代码。用asyn4j轻松搞定异步方法调用.提高程序的响应能力.
设计图
1.调用普通方法
主方法
异步调用对象
回调方法
2.调用Spring Bean的异步方法
3.使用异步工作缓冲器
当工作队列中的工作超过300个时,异步工作将由CacheAsynWorkHandler?处理;
4.异步工作优级
看到这里感兴趣了吗?想了解更多查看如下资料或站内信联络.
项目地址:http://asyn4j.googlecode.com
源码SVN : http://asyn4j.googlecode.com/svn/branches/asyn4j
WIKI: http://code.google.com/p/asyn4j/wiki/user_guide
现在asyn4j已经是1.3了.这个文章是1.0发表,所以有些问题。你可以到googlecode上下载最新的源码。有问题可以联系我。
这个框架就是用Executor实行的线程池功能.
看到Executor框架中的线程池ThreadPoolExecutor了吗?
这个评论的人真恶心,先不说asyn4j本身如何,就这个这态度,真想打它。他完全就是为了批评而批评,言语间到处流露着对asyn4j作者的不屑。你觉得不好,你可以有两个选择:1、就事论事,说出那儿不好,提出一些修改的意见,言语要中肯。2、你可以走人嘛,没有人把刀架你脖子上强迫你用吧。
将心比心,试想如果这位评论者自己写的代码被别人这样说,心里是什么滋味。更何况asyn4j作者态度还这么好,耐心地跟你这个傲慢的无理取闹者解释。
另外,我觉得asyn4j这个名字取得特别好听,我已决定在自己的一个项目的基础服务中,使用asyn4j来提供异步服务。希望作者再接再励,不被这些负面的评论所打击。将asyn4j做的更好。
随便说一句:中国人老强调国内IT水平太差,中国人自己做不出什么框架来,如今有人尝试,我们却大加指责,这算什么,请问这些指责的人,你们是什么用心?
其实你们没什么用心,无非就是偏见罢了。收起你们可怜巴巴的偏见吧,看看你们自己知道多少,你们自己都做了什么?
只让人想起一句悲凉的话:做和不做的最大区别,就是后者拥有对前者的评论权。仅此而已,奉劝这些人:please do something !
是的,下一个版本将包含这些功能,谢谢你们.
如果能解决这个问题,我想这个框架还是很有用的。
诸如此类评贴,实在让人不敢恭维啊。
我需到过此类需求。非常感谢楼主的分享。
谢谢,这个贴有两个目的。
1.由于我是闭门造车,对这个框架考虑可能不是很周全.希望积思广义.不断的完善.
2.了解大家项目中是否需要类似这样的框架.
诸如此类评贴,实在让人不敢恭维啊。
我需到过此类需求。非常感谢楼主的分享。
这部份还没有做,不过这个框架要可以清松的扩展.谢谢你的建议.我将会完善这个功能.谢谢!
这个框架就是用Executor实行的线程池功能.
看到Executor框架中的线程池ThreadPoolExecutor了吗?
这个框架就是用Executor实行的线程池功能.
让我们写异步方法不再写很多的相关多线程代码。用asyn4j轻松搞定异步方法调用.提高程序的响应能力.
设计图
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
评论
25 楼
xiaokang1582830
2012-08-17
有一点没有考虑到的就是是否可以提供目前已经在调用的calss和class中的方法,其实这功能很简单!不过这样的话使用的时候就可以知道哪些方法已经在调用了如果重复调用此方法就不会多次异步调用
24 楼
pan_java
2011-07-26
zeng7960983 写道
lz 应该写下api 从google上面下载了代码根据楼主的demo示例发现有问题 请及时更新
现在asyn4j已经是1.3了.这个文章是1.0发表,所以有些问题。你可以到googlecode上下载最新的源码。有问题可以联系我。
23 楼
zeng7960983
2011-07-25
lz 应该写下api 从google上面下载了代码根据楼主的demo示例发现有问题 请及时更新
22 楼
michael9418
2010-11-17
duooluu 写道
pan_java 写道
duooluu 写道
为啥不看看java jdk里的Executor框架呢?
这个框架就是用Executor实行的线程池功能.
看到Executor框架中的线程池ThreadPoolExecutor了吗?
这个评论的人真恶心,先不说asyn4j本身如何,就这个这态度,真想打它。他完全就是为了批评而批评,言语间到处流露着对asyn4j作者的不屑。你觉得不好,你可以有两个选择:1、就事论事,说出那儿不好,提出一些修改的意见,言语要中肯。2、你可以走人嘛,没有人把刀架你脖子上强迫你用吧。
将心比心,试想如果这位评论者自己写的代码被别人这样说,心里是什么滋味。更何况asyn4j作者态度还这么好,耐心地跟你这个傲慢的无理取闹者解释。
另外,我觉得asyn4j这个名字取得特别好听,我已决定在自己的一个项目的基础服务中,使用asyn4j来提供异步服务。希望作者再接再励,不被这些负面的评论所打击。将asyn4j做的更好。
随便说一句:中国人老强调国内IT水平太差,中国人自己做不出什么框架来,如今有人尝试,我们却大加指责,这算什么,请问这些指责的人,你们是什么用心?
其实你们没什么用心,无非就是偏见罢了。收起你们可怜巴巴的偏见吧,看看你们自己知道多少,你们自己都做了什么?
只让人想起一句悲凉的话:做和不做的最大区别,就是后者拥有对前者的评论权。仅此而已,奉劝这些人:please do something !
21 楼
sunrie
2010-08-27
没觉得哪里比Executor优秀,封装意义何在?
20 楼
pan_java
2010-08-27
<div class="quote_title">cutesource 写道</div>
<div class="quote_div">
<p> </p>
<div style="color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; margin: 8px;">
<p style="margin: 0px;">感觉和直接使用ThreadPoolExecutor没多大区别吧</p>
<p style="margin: 0px;">关于JDK的线程池可以参考一下这篇博文<a href="http://blog.csdn.net/cutesource/archive/2010/08/04/5788534.aspx">http://blog.csdn.net/cutesource/archive/2010/08/04/5788534.aspx</a></p>
</div>
<p> </p>
</div>
<p>我是在ThreadPoolExecutor基础上再封装了一层。</p>
<div class="quote_div">
<p> </p>
<div style="color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; margin: 8px;">
<p style="margin: 0px;">感觉和直接使用ThreadPoolExecutor没多大区别吧</p>
<p style="margin: 0px;">关于JDK的线程池可以参考一下这篇博文<a href="http://blog.csdn.net/cutesource/archive/2010/08/04/5788534.aspx">http://blog.csdn.net/cutesource/archive/2010/08/04/5788534.aspx</a></p>
</div>
<p> </p>
</div>
<p>我是在ThreadPoolExecutor基础上再封装了一层。</p>
19 楼
cutesource
2010-08-26
<p>
</p>
<div style="color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; margin: 8px;">
<p style="margin: 0px;">感觉和直接使用ThreadPoolExecutor没多大区别吧</p>
<p style="margin: 0px;">关于JDK的线程池可以参考一下这篇博文<a href="http://blog.csdn.net/cutesource/archive/2010/08/04/5788534.aspx">http://blog.csdn.net/cutesource/archive/2010/08/04/5788534.aspx</a></p>
</div>
<p> </p>
</p>
<div style="color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; margin: 8px;">
<p style="margin: 0px;">感觉和直接使用ThreadPoolExecutor没多大区别吧</p>
<p style="margin: 0px;">关于JDK的线程池可以参考一下这篇博文<a href="http://blog.csdn.net/cutesource/archive/2010/08/04/5788534.aspx">http://blog.csdn.net/cutesource/archive/2010/08/04/5788534.aspx</a></p>
</div>
<p> </p>
18 楼
tarsean
2010-08-26
异步调用,为什么不直接使用JMS呢?
17 楼
JavaLanguageFun
2010-08-26
我想知道你这个是干啥饿 。。
16 楼
pan_java
2010-08-26
integergx 写道
再进一步讨论吧,你的框架考虑的还是很不全面的。
是的,下一个版本将包含这些功能,谢谢你们.
15 楼
integergx
2010-08-26
再进一步讨论吧,你的框架考虑的还是很不全面的。
14 楼
sharkhu
2010-08-26
integergx 写道
我目前也在寻找这样的框架技术
Spring3已经有个一个Future的异步执行。
自己用线程写也是可以实现的。
我的问题是,如何保证异步调用的容错性?
:调用的程序运行一半,系统死掉了,而该异步调用又是必须完成的业务?
Spring3已经有个一个Future的异步执行。
自己用线程写也是可以实现的。
我的问题是,如何保证异步调用的容错性?
:调用的程序运行一半,系统死掉了,而该异步调用又是必须完成的业务?
如果能解决这个问题,我想这个框架还是很有用的。
13 楼
pan_java
2010-08-26
pangyi 写道
askyuan 写道
我只能说胡扯蛋
诸如此类评贴,实在让人不敢恭维啊。
我需到过此类需求。非常感谢楼主的分享。
谢谢,这个贴有两个目的。
1.由于我是闭门造车,对这个框架考虑可能不是很周全.希望积思广义.不断的完善.
2.了解大家项目中是否需要类似这样的框架.
12 楼
pangyi
2010-08-26
askyuan 写道
我只能说胡扯蛋
诸如此类评贴,实在让人不敢恭维啊。
我需到过此类需求。非常感谢楼主的分享。
11 楼
cya55
2010-08-25
楼主考虑超时了吗?
10 楼
pan_java
2010-08-25
integergx 写道
我目前也在寻找这样的框架技术
Spring3已经有个一个Future的异步执行。
自己用线程写也是可以实现的。
我的问题是,如何保证异步调用的容错性?
:调用的程序运行一半,系统死掉了,而该异步调用又是必须完成的业务?
Spring3已经有个一个Future的异步执行。
自己用线程写也是可以实现的。
我的问题是,如何保证异步调用的容错性?
:调用的程序运行一半,系统死掉了,而该异步调用又是必须完成的业务?
这部份还没有做,不过这个框架要可以清松的扩展.谢谢你的建议.我将会完善这个功能.谢谢!
9 楼
integergx
2010-08-25
我目前也在寻找这样的框架技术
Spring3已经有个一个Future的异步执行。
自己用线程写也是可以实现的。
我的问题是,如何保证异步调用的容错性?
:调用的程序运行一半,系统死掉了,而该异步调用又是必须完成的业务?
Spring3已经有个一个Future的异步执行。
自己用线程写也是可以实现的。
我的问题是,如何保证异步调用的容错性?
:调用的程序运行一半,系统死掉了,而该异步调用又是必须完成的业务?
8 楼
duooluu
2010-08-25
pan_java 写道
duooluu 写道
为啥不看看java jdk里的Executor框架呢?
这个框架就是用Executor实行的线程池功能.
看到Executor框架中的线程池ThreadPoolExecutor了吗?
7 楼
pan_java
2010-08-25
duooluu 写道
为啥不看看java jdk里的Executor框架呢?
这个框架就是用Executor实行的线程池功能.
6 楼
duooluu
2010-08-25
为啥不看看java jdk里的Executor框架呢?
发表评论
-
sql 解析 工具(sql parse)
2010-11-25 12:51 5814项目地址: http://jsqlparser.source ... -
asyn4j 1.2 发布
2010-10-08 19:16 18481.2更新 1.设置关闭服务延时 2.设置异步工作 ... -
代码备忘录
2010-08-06 10:47 1263List 迭代 private final List& ... -
java分布式学习笔记
2010-07-19 22:05 38481.分布式JAVA应用 基于TC ... -
写正则表达式--工具分享
2010-04-07 11:06 1174这是一个写和测正则表达式很好的工具,不知大家有没有用过! 里面 ... -
mina 实现与memcached 连接工具
2010-02-24 22:00 2034前段时间学习了mina框架.就确定写一个小实例玩一下. 看到不 ... -
JMF 通过 Applet 获取数据
2009-12-22 15:15 1618import java.awt.BorderLayou ... -
yanf4j 服务端读取操作 源码分析
2009-12-19 15:13 1381最近学习 NIO,学习了XMemcached 和 它的NIO框 ... -
Statement,PreparedStatement区别
2009-12-17 16:04 2204以Oracle为例吧 Statement ... -
java 排序 整合
2009-12-17 14:59 1197package net.rubyeye.xmemcached. ... -
JVM 结束挂钩程序
2009-12-16 15:08 1136public class HookTest { /** ... -
java优化编程--读书笔记
2009-12-09 14:58 17711.JVM管理两种类型的内存:堆内存(heap),栈内存(st ... -
Java的内存泄漏
2009-11-30 11:54 946Java的一个重要优点就是通过垃圾收集器(Garbage Co ... -
TCP/IP 无阻塞 Socket
2009-11-25 17:25 1915package com.io; import java. ... -
java socket 多线程处理
2009-11-25 16:16 2251public class MallShopSoketServe ... -
写ZIP文件
2009-11-24 09:42 955public class ZipTest { /** ... -
XML DOM API
2009-11-23 11:49 1469javax.xml.parse.DocumentBuilder ... -
自定义类加载器
2009-11-23 09:34 1080public class CryptoClassLoader ... -
ibatis 缓存 key 过长,大家有什么看法
2009-11-21 10:50 1029实体类 public class Account impl ... -
ibatis 缓存模块 key实现类
2009-11-20 16:15 1175//更新CacheKey hashcode ,每个参数 ...
相关推荐
自用备份
asyn4j是一个java异步方法调用框架,本人对源码做了一些修改,使其支持java 1.4或更高的版本。
异步队列,实用,需要手动添加到maven仓库 @Override public void send(String beanId, Map,Serializable> map) { AsynService asynService = AsynServiceImpl.getService(); asynService.init(); asynService....
该资源为Background-Matting的四个模型之一的syn-comp-adobe,欢迎大家下载学习使用哦!
background-matting运行所需要的权重文件syn-comp-adobe-20200511T154047Z-001.zip
background-matting运行所需要的权重文件syn-comp-adobe-trainset-20200511T154125Z-001.zip
SYN补丁---内测版
软件说明: 在命令提示符下运行,只支持NT/2000/XP/03系统 中国红客联盟(HUC) 在鼎盛时期的DDOS作品 上传只为学习之用,禁止用于非法途径!
verilog语言中易犯的错误,自己写的异步fifo的源代码,同步fifo的源代码。数字ic设计流程,低功耗技术,MOS管,FPGA中LUT的原理等等
该资源为Background-Matting的四个模型之一的syn-comp-adobe-trainset,欢迎大家下载学习使用哦!
一步套接字模型,讲述了几种常用的套接字模型。想学网络编程的话,必看!
Buck STM32源代码 Syn-Buck CMC v1.0Buck STM32源代码 Syn-Buck CMC v1.0Buck STM32源代码 Syn-Buck CMC v1.0Buck STM32源代码 Syn-Buck CMC v1.0Buck STM32源代码 Syn-Buck CMC v1.0Buck STM32源代码 Syn-Buck CMC ...
python库,解压后可用。 资源全名:music_syn-2.4-py3-none-any.whl
资源来自pypi官网。 资源全名:music_syn-2.4-py3-none-any.whl
Asyn-SimRank:一种异步执行的大规模SimRank算法
Buck STM32源代码 Syn-buckBuck STM32源代码 Syn-buckBuck STM32源代码 Syn-buckBuck STM32源代码 Syn-buckBuck STM32源代码 Syn-buckBuck STM32源代码 Syn-buckBuck STM32源代码 Syn-buckBuck STM32源代码 Syn-...
资源分类:Python库 所属语言:Python 资源全名:syn_commodore-0.8.3-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
SYN480R-315M无线接收芯片,无线接收IC 高性能 高性价比
资源分类:Python库 所属语言:Python 资源全名:syn_reports-0.0.12-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059