Feedback
# re: asyn4j-1.2 发布(异步方法调用框架)
2010-10-26 13:11 |
这个DEMO运行完后线程不会关闭是怎么回事呢
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)
2010-10-26 13:53 |
运行完后javaw.exe不会关闭,每次运行都不会产生一个javaw.exe,怎么回事呢
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)
2010-10-26 20:25 |
@mgy0733
因为是异步方法是后台线程的,当junit方法执行完可能异步方法还没有执行。所以加入下面这句线程等待,删除下面这句就可以了。
Thread.sleep(Long.MAX_VALUE);
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)
2010-10-27 08:42 |
@pan_java
public static void main(String[] args) {
// 初始化异步工作服务
AsynService anycService = AsynServiceImpl.getService(300, 3000L, 100,
100, 1000);
// 异步工作缓冲处理器
anycService.setWorkQueueFullHandler(new CacheAsynWorkHandler(100));
// 服务关闭处理器
anycService.setCloseHander(new DefauleCloseHandler());
// 异步工作执行异常处理器
anycService.setErrorAsynWorkHandler(new DefaultErrorAsynWorkHandler());
// 启动服务
anycService.init();
// 异步回调对象
AsynCallBack back = new TargetBack();
for (int i = 0; i < 100; i++) {
//添加加异步工作- TargetService 的 test 方法 ,方法参数 asynej+ i
anycService.addWork(TargetService.class, "test",
new Object[] { "asyn4j " + i }, new TargetBack());
}
运行这段代码,并没有调用Thread.sleep(Long.MAX_VALUE),主线程还是不会退出,但在junit中删掉Thread.sleep(Long.MAX_VALUE)主线程可以正常退出
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)[未登录]
2010-10-27 20:38 |
@mgy0733
anycService.close(3000);
是可以关闭服务的,
但是发现有一个BUG已经修复了.下载最新的jar包就可以了
1.CacheAsynWorkHandler 守护线程没有为后台线程
2.线程池 调用 awaitTermination 方法 在shutdown之后,使服务线程等待失效。
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)[未登录]
2010-10-27 20:48 |
@mgy0733
jar 不能上传,请直接拿分支打包.或者svn分支上的jar包
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)
2010-10-28 08:19 |
@pan_java
谢谢楼主
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)
2010-10-28 12:47 |
@mgy0733
public static void main(String[] args) {
// 初始化异步工作服务
AsynService anycService = AsynServiceImpl.getService(300, 3000L, 100,
100, 1000);
// 异步工作缓冲处理器
anycService.setWorkQueueFullHandler(new CacheAsynWorkHandler(100));
// 服务关闭处理器
anycService.setCloseHander(new DefauleCloseHandler());
// 异步工作执行异常处理器
anycService.setErrorAsynWorkHandler(new DefaultErrorAsynWorkHandler());
// 启动服务
anycService.init();
// 异步回调对象
AsynCallBack back = new TargetBack();
for (int i = 0; i < 100; i++) {
//添加加异步工作- TargetService 的 test 方法 ,方法参数 asynej+ i
anycService.addWork(TargetService.class, "test",
new Object[] { "asyn4j " + i }, new TargetBack());
}
anycService.close(3000);
}
调用anycService.close(3000),后可以关闭服务,但会给出警告信息:
2010-10-28 12:43:43 com.googlecode.asyn4j.core.handler.DefauleCloseHandler process
警告: asyn work have 0 no run!
2010-10-28 12:43:43 com.googlecode.asyn4j.core.handler.DefauleCloseHandler process
警告: call back have 0 no run!
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)[未登录]
2010-10-29 09:09 |
@Kimi Mool
是的没有错。
因为关闭服务的时候可能会有没有完成的异步任务。
DefauleCloseHandler 处理器的主要作用就是告诉你服务关闭时还有多少异步和回调任务没有完成。
警告: asyn work have 0 no run!
警告: call back have 0 no run!
上面的信息告诉你异步和回调任务只有0个没有运行,也就是全部都执行了。
回复 更多评论
# re: asyn4j-1.2 发布(异步方法调用框架)[未登录]
2010-10-29 09:11 |
@mgy0733
是的没有错。
因为关闭服务的时候可能会有没有完成的异步任务。
DefauleCloseHandler 处理器的主要作用就是告诉你服务关闭时还有多少异步和回调任务没有完成。
警告: asyn work have 0 no run!
警告: call back have 0 no run!
上面的信息告诉你异步和回调任务只有0个没有运行,也就是全部都执行了
回复 更多评论