Asyn4j是一个开源的异步任务管理框架,关于该框架的使用,网上有很多的例子可以查看,这里不再赘述。由于项目需要,我对该框架进行了封装和改进,改进点就是通过和spring的结合,将线程池、异步队列、线程池的配置都放在配置文件中;除此之外,该框架有一个问题就是如果存在的相同类型的任务过多,成百上千个,那么这些任务就会阻塞后续的任务执行,该框架也解决了该问题。就是通过配置不同的线程池,通过设置属性excuteType,如果设置为byClass那么该类的操作都放在一个线程池中,如果设置为byMethod那么只有该方法的操作放在线程池中执行。其他补多少,直接上代码。
首先是配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd" default-autowire="byName" default-lazy-init="true"> <bean id="springBeanUtil" class="com.inspur.incloud.common.util.AsynSpringUtil" autowire="byName" lazy-init="false" /> <bean id="dbJobServiceAsynHandler" class="com.inspur.incloud.common.util.asynjob.core.handler.DbJobServiceAsynHandler" /> <bean id="fileAsynServiceHandler" class="com.inspur.incloud.common.util.asynjob.core.handler.FileAsynServiceHandler"/> <bean id="cacheWorkQueueFullHandler" class="com.inspur.incloud.common.util.asynjob.core.handler.CacheAsynWorkHandler"> <constructor-arg name="maxLength" value="400" ></constructor-arg> </bean> <bean id="asynJobService" init-method="getObject" lazy-init="false" class="com.inspur.incloud.common.util.asynjob.spring.AsynServiceFactoryBean" > <!-- 异步服务器名称 --> <property name="serviceName" value="iresourceJobService"></property> <!-- 最大工作队列缓存工作数 --> <property name="maxCacheWork" value="3000"></property> <!-- 当工作队列满时添加工作等待时间 --> <property name="addWorkWaitTime" value="2000"></property> <!-- 异步工作执行线程池大小 默认:(cpu核数/2)+1 --> <property name="workThreadNum" value="100"></property> <!-- 回调执行线程池大小 默认:cpu核数/2 --> <property name="callbackThreadNum" value="100"></property> <property name="operateMap"> <map> <!-- 虚拟机操作的线程最大允许个数 --> <entry key="com.inspur.incloud.common.util.asynjob.util.TargetService" value-ref="vmOpExcute"/> </map> </property> <!-- 是否允许负载均衡 --> <property name="allowLB" value="true"></property> <property name="workQueueFullHandler" ref="cacheWorkQueueFullHandler" /> <!-- 任务持久化处理器 --> <property name="jobServiceAsynHandler" ref="dbJobServiceAsynHandler" /> <!-- 服务启动和关闭处理器 --> <property name="serviceHandler" ref="fileAsynServiceHandler" /> </bean> <bean id="vmOpExcute" class="com.inspur.incloud.common.util.asynjob.core.ExcutePool"> <property name="name" value="openVmThread" /> <!--有两种可供选择 byClass or byMethod, 不区分大小写--> <property name="excuteType" value="byClass" /> <property name="maxCacheWork" value="100" /> <property name="workThreadNum" value="100" /> <!-- 当工作队列满时添加工作等待时间 --> <property name="addWorkWaitTime" value="2000"></property> <property name="callbackThreadNum" value="100" /> <property name="workQueueSize" value="100" /> </bean> </beans>
由于机密需要,只上传了该包的代码,有问题可以直接留言
相关推荐
用verilog实现异步fifo,通过仿真
用Verilog实现FIFO的异步设计,里面有详细的代码和各个模块的代码,经过调试可以使用
年份:2007-2022 信息不对称程度数据和代码 样本数量:46894条 ...ASY1和ASY2没有本质区别 哪个跑出来结果好就用哪个。 具体原始数据、过程代码和stata 与Excel格式的计算结果数据是提供到2007-2022的。
异步FIFO的实现方法,配源程序和WORD说明
使用.v实现异步FIFO,包括跨时钟域处理
SY7066封装,已经批量生产,现贡献出来
博文《Xilinx FPGA 复位信号知识点》的原始代码,综合时可选择注释不需要的部分。
用matlab里的simlink及s函数编写的异步发电机模型,能作为风力发电机等异步发电机模型
年份:1991-2022 信息不对称...ASY1和ASY2没有本质区别 哪个跑出来结果好就用哪个。 具体有过程代码和stata 与Excel格式的计算结果数据是提供到1991-2022的。 (含超2.8GB的2007-2021计算原始数据(可用于验证过程)
异步电机驱动程序,采用磁场定向控制技术(foc)以及直接转矩控制技术(dtc),并且还有弱磁升速程序
asy_rabbitmq是在asy_rabbitmq的异步AMQP客户端(pika包装器)。 要求 Python 3.8以上 安装 pip install asy_rabbitmq 入门 import asyncio import asy from random import random from asy_rabbitmq import ...
基于MATLAB的异步发电机模型,很有用的,貌似这方面的很少
本例题是在MATLAB环境下搭建的异步电机的发电状态,带有负载。
N-asy。我们的第一电子刊!N-asy成员们,下载的来这里!
Sy Javascript 框架 [开发] [掌握]哲学该框架的目的是帮助您构建单页应用程序 (SPA)。 目标不是像所有其他框架一样快速构建应用程序,而是构建强大的代码架构来构建强大的、大规模的应用程序。项目状态Sy 仍在开发中...
SY2-J.C
A股上市企业信息不对称指数ASY数据与stata代码2023-1991年 更新日 志: 此次数据更新扩充到了1991-2023年,增量不加价 文献: 金融科技与企 业全要素生产率...—“赋能”和信贷配给的视角_宋敏 政治关联和融资约束_...
封装系统工具srsgohstsy 专用封装系统工具,制作自己的系统盘为别人装电脑时倍儿有面!~~
IMX6ULL 核心板AD PADS CADENCE 3种封装原理图库+PCB封装库+主要器件技术手册, 器件手册: IMX6ULLIEC.pdf KLM8G1GETF-B041-14B.pdf MT41K256M16TW-107 IT.pdf MT9700.pdf RB521S30.PDF RT8096CHGJ5.PDF SSM3J328R....