- 浏览: 285593 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
梦醒无尘:
异步处理框架已经用到项目上,感谢你利用休息时间创造出一款舒服的 ...
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
谢谢你的批评,请说出你的道理我洗耳恭听.这样有利于我们的成长.
我以前项目开发就遇到很多这样的问题,写一具异步方法。要写很多代码.
一直都想有类似一个异步方法调用封装的框架.
能简单的介绍为啥要用你这个么?
你对runnable callable有任何优化么?
你的架构有没有基于什么理论?
在写异步方法经常要写一些相关的多线程代码,使用框架后可以不用关心多线程代码。同时如果项目中很多地方要使用的异步的话,多线程代码分散不便于测试和维护.
runnable callable 优化不知道你指那方面的优化,在框架中异步工作和回调都是并发进行的.并发量需根据你系统和业务具体的进行设置。
架构很简单,就是生产者与消费者的模式.在高并发的情况可以自己设定异步工作缓冲器,缓存起来等系统闲下来再执行。异步工作可设置优化级.提供监控状态信息.
让我们写异步方法不再写很多的相关多线程代码。用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
评论
5 楼
pan_java
2010-08-25
askyuan 写道
我只能说胡扯蛋
谢谢你的批评,请说出你的道理我洗耳恭听.这样有利于我们的成长.
我以前项目开发就遇到很多这样的问题,写一具异步方法。要写很多代码.
一直都想有类似一个异步方法调用封装的框架.
4 楼
askyuan
2010-08-25
我只能说胡扯蛋
3 楼
pan_java
2010-08-25
beneo 写道
能简单的介绍为啥要用你这个么?
你对runnable callable有任何优化么?
你的架构有没有基于什么理论?
在写异步方法经常要写一些相关的多线程代码,使用框架后可以不用关心多线程代码。同时如果项目中很多地方要使用的异步的话,多线程代码分散不便于测试和维护.
runnable callable 优化不知道你指那方面的优化,在框架中异步工作和回调都是并发进行的.并发量需根据你系统和业务具体的进行设置。
架构很简单,就是生产者与消费者的模式.在高并发的情况可以自己设定异步工作缓冲器,缓存起来等系统闲下来再执行。异步工作可设置优化级.提供监控状态信息.
2 楼
beneo
2010-08-25
能简单的介绍为啥要用你这个么?
你对runnable callable有任何优化么?
你的架构有没有基于什么理论?
你对runnable callable有任何优化么?
你的架构有没有基于什么理论?
1 楼
pan_java
2010-08-25
没有人感兴趣吗?
发表评论
-
sql 解析 工具(sql parse)
2010-11-25 12:51 5945项目地址: http://jsqlparser.source ... -
asyn4j 1.2 发布
2010-10-08 19:16 18971.2更新 1.设置关闭服务延时 2.设置异步工作 ... -
代码备忘录
2010-08-06 10:47 1305List 迭代 private final List& ... -
java分布式学习笔记
2010-07-19 22:05 39001.分布式JAVA应用 基于TC ... -
写正则表达式--工具分享
2010-04-07 11:06 1222这是一个写和测正则表达式很好的工具,不知大家有没有用过! 里面 ... -
mina 实现与memcached 连接工具
2010-02-24 22:00 2106前段时间学习了mina框架.就确定写一个小实例玩一下. 看到不 ... -
JMF 通过 Applet 获取数据
2009-12-22 15:15 1669import java.awt.BorderLayou ... -
yanf4j 服务端读取操作 源码分析
2009-12-19 15:13 1434最近学习 NIO,学习了XMemcached 和 它的NIO框 ... -
Statement,PreparedStatement区别
2009-12-17 16:04 2258以Oracle为例吧 Statement ... -
java 排序 整合
2009-12-17 14:59 1237package net.rubyeye.xmemcached. ... -
JVM 结束挂钩程序
2009-12-16 15:08 1199public class HookTest { /** ... -
java优化编程--读书笔记
2009-12-09 14:58 18571.JVM管理两种类型的内存:堆内存(heap),栈内存(st ... -
Java的内存泄漏
2009-11-30 11:54 992Java的一个重要优点就是通过垃圾收集器(Garbage Co ... -
TCP/IP 无阻塞 Socket
2009-11-25 17:25 1958package com.io; import java. ... -
java socket 多线程处理
2009-11-25 16:16 2299public class MallShopSoketServe ... -
写ZIP文件
2009-11-24 09:42 996public class ZipTest { /** ... -
XML DOM API
2009-11-23 11:49 1510javax.xml.parse.DocumentBuilder ... -
自定义类加载器
2009-11-23 09:34 1132public class CryptoClassLoader ... -
ibatis 缓存 key 过长,大家有什么看法
2009-11-21 10:50 1068实体类 public class Account impl ... -
ibatis 缓存模块 key实现类
2009-11-20 16:15 1216//更新CacheKey hashcode ,每个参数 ...
相关推荐
`asyn4j for java 1.4` 是一个专为Java 1.4及更高版本设计的异步方法调用框架。在Java早期版本中,由于并发处理能力的限制,开发者往往需要手动处理多线程,这增加了代码的复杂性和出错的可能性。`asyn4j` 提供了一...
Spring 框架提供了 @Async 注解来实现异步调用,该注解可以在方法上添加,以使得方法被异步调用。下面我们将详细介绍 Spring @Async 方法如何添加注解实现异步调用。 什么是 @Async 注解 @Async 注解是一个 Spring...
在【压缩包子文件的文件名称列表】"Asyn_Ice_WinformDemo"中,我们可以推测这个压缩包包含了一个完整的winform项目,可能有以下几个部分: 1. **解决方案文件(Solution File)**:通常为`.sln`文件,包含了项目的...
然后,在方法上添加@Async注解,声明该方法为异步调用方法。这样,在执行该方法时,将会在独立的线程中被执行,调用者无需等待它的完成。 四、使用@Async注解 @Async注解可以应用于无返回值方法和有返回值方法。在...
使用传统的同步编程模型时,如果请求中的某个操作需要等待I/O响应(如数据库操作或调用外部Web API),那么这个线程就会被阻塞,直到该操作完成。这将导致线程池中的线程数量有限而无法处理更多的并发请求。 异步...
- **asyn**:布尔值,表示是否采用异步方式处理请求,默认为 true 表示异步。 #### 2.2 函数逻辑分析 1. **初始化 XMLHttpRequest 对象**: - 检查浏览器环境,尝试创建 XMLHttpRequest 对象。对于现代浏览器使用...
- **静态方法 实例方法区别**:静态方法不依赖于对象存在,实例方法通过对象调用。 - **静态内部类、成员内部类、局部内部类、匿名内部类**:不同类型的内部类,具有不同的作用域和生命周期。 - **equals方法**:...
例如,在Objective-C中,可以使用`performSelector:`方法动态调用对象的方法。 #### 七、runtime实现的机制是什么,怎么用,一般用于干嘛。你还能记得你所使用的相关的头文件或者某些方法的名称吗? Runtime机制是...
- **反射原理**:通过Class对象获取类的信息,创建实例、调用方法等。 - **创建实例方式**:使用Class对象的newInstance()方法、Constructor对象的newInstance()方法等。 ##### 4.2.2 Class.forName与ClassLoader的...
// asyn network mHandler.sendEmptyMessageDelayed(MSG_POLLING, POLLING_INTERVAL); } ``` 在上面的代码中,我们使用 `Handler` 对象来实现轮询机制。我们首先定义了一个 `MSG_POLLING` 消息,然后在 `...
`getA`方法中的`this`指向`a`实例,所以`funA()`调用时,`this.name`输出`123`。 4. 找出字符串中出现次数最多的字符及其次数: 这道编程题可以通过遍历字符串,使用哈希表(对象)记录每个字符出现的次数,最后找...
4. **TCP的三次握手与四次挥手**:三次握手确保了双方都能通信,四次挥手用于断开连接,防止"半关闭"状态。 5. **设计汽车摇号系统**:涉及概率计算和随机数生成,需要确保公平性和效率。 6. **Linux命令**:例如`...
三次握手过程包括了主机A向主机B请求建立连接、主机B确认请求、主机A确认主机B的数据段三个步骤,而四次挥手则是结束TCP连接的四个步骤。此外,面试官还可能询问你如何解决SYNFLOOD攻击这一常见的DDoS攻击。 在Web...