序言
com.lietou.common.asyn4j 封装了一个异步方法调用框架,包括了异步方法执行、异步回调执行、异步方法持久化并且支持Spring.
功能:
异步工作可以设置执行权重
支持异步回调
任务持久化及恢复功能
Spring 支持
定期打印任务运行状态信息
一丶普通调用方法
例子:
主方法
public static void main(String[] args) {
// 初始化异步工作服务
// 默认参数,队列长度:10000,添加时间:10毫秒,工作线程数:cpu个数,回调线程数:cpu个数,停止服务时间:5秒
AsynService asynService = AsynServiceImpl.newInstance();
// 自定义参数
AsynService anycService = AsynServiceImpl.newInstance(10000, 10L, 100, 50, 5000);
// 异步工作持久化工作器
// 参数,保存目录;监测时间,单位秒
RejectedHandler rejectedHandler = new ScheduledRejectedHandler("/Users/yuanxl/empolder/tmp", 600);
anycService.setRejectedHandler(rejectedHandler);
// 异步工作异常处理器
anycService.setErrorHandler(new DefaultErrorHandler());
// 异步工作合并处理器,自有批量执行需要合并结果的时候需要
// ResultMergeHandler merge = new TestMerge()
// asynService.setResultMergeHandler(resultMergeHandler);
// 启动服务
asynService.init();
// 添加任务,example
TestService testService = new TestService();
Class>[] type = { int.class };
for (int i = 0; i < 1000; i++) {
// 添加异步工作- TestService 的 incr 方法 ,方法参数 i
asynService.addJob(testService, "incr", type, new Object[] { i });
// 添加异步且回调工作
asynService.addJob(testService, "incr", type, new Object[] { j }, new TestCallback());
}
// 停止服务
asynService.close();
}
异步调用对象
public class TestService {
public String incr(int num) {
//System.out.println("incr: " + num);
return num + 1 + "";
}
}
回调方法
//回调需继承AsynCallback抽象类
public class TestCallback extends AsynCallback {
private static final long serialVersionUID = -9078828850204151543L;
@Override
public void doNotify() {
<