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>
由于机密需要,只上传了该包的代码,有问题可以直接留言
相关推荐
5. **DPRAM模块**:在ASY_FIFO.v中,DPRAM(双端口RAM)是实现FIFO存储的主要组件。双端口RAM允许同时在两个独立的端口进行读写操作,非常适合异步FIFO的应用。DPRAM的大小应等于FIFO的深度,其接口通常包含读写地址...
在本项目中,"asy_FIFO.rar_asy fifo_asynchronous fifo_异步FIFO" 提供了使用Verilog实现异步FIFO的详细代码,包括各个模块,这些代码经过调试已经可以正常使用。 异步FIFO的设计关键在于解决读写指针同步问题,...
这个压缩包“asy_fifo.rar_异步FIFO”包含了关于异步FIFO的实现方法以及源代码和详细说明文档。 异步FIFO的主要特点在于其读写端口使用了不同的时钟,这种设计通常用于两个不同速度或不同电源域的系统之间进行数据...
在“Asy_FIFO-master”项目中,我们主要探讨的是如何使用Verilog语言来实现异步FIFO。 异步FIFO的核心挑战在于解决时钟域交叉问题,也就是如何在两个不同的时钟域中保持数据的完整性和一致性。通常,这需要一个读...
虽然ASY1和ASY2在本质上没有明显的区别,但在实际应用中可以根据计算结果的好坏来选择使用哪一个。这些指数通常是通过复杂的统计模型计算得出,能够更全面地反映市场上信息不对称的程度。 ### 三、数据来源与处理...
A股上市企业信息不对称指数ASY数据与stata代码2023-1991年 更新日 志: 此次数据更新扩充到了1991-2023年,增量不加价 文献: 金融科技与企 业全要素生产率...—“赋能”和信贷配给的视角_宋敏 政治关联和融资约束_...
3. **启动异步调用**:调用代理类的`Begin`方法来启动异步调用,该方法接受一个异步回调对象和一个可选的状态对象作为参数,并返回一个`IAsyncResult`实例。 4. **完成异步调用**:当异步操作完成后,通过`...
在MATLAB环境中,异步发电机(ASY Generator)的模型与应用是电力系统研究的重要部分,尤其是在模拟和分析电力系统的动态行为时。这个“asy_generator_load.rar”压缩包包含了一个名为“asy_generator_load.mdl”的...
标题中的“asy_generator.rar_ INDUCTION GENERATOR_asy_generator_induction_发”指的是一个关于异步发电机(Asynchronous Generator)的MATLAB模型文件。这个压缩包可能包含了一个用于模拟和分析异步发电机工作...
在本压缩包中,包含两个关键文件:`asy_ge.m` 和 `asy_generator.mdl`,它们分别代表MATLAB的脚本文件和Simulink模型文件,用于模拟异步发电机的工作特性。 `asy_ge.m` 是一个MATLAB脚本,可能包含了初始化参数设置...
标题“ASY_FIFO.rar_gals”中的“ASY_FIFO”指的是异步FIFO,而“gals”标签则意味着这个设计是基于全局异步局部同步(GALS,Global Asynchronous Local Synchronous)架构的。GALS架构在现代数字系统设计中具有重要...
这段代码定义了一个名为`DFF_ASY`的实体,包含四个端口:`CLOCK`(时钟输入)、`RESET`(异步清零输入)、`DFF_IN`(数据输入)和`DFF_OUT`(数据输出)。 ##### 3.2 异步清零D触发器架构体实现 ```vhdl ...
- ASY1和ASY2在本质上并无显著差异,可以根据分析结果选择使用哪一个。 #### 数据格式 - **面板数据**:这是一种横截面与时间序列相结合的数据类型,适合进行长期趋势和跨期比较的研究。 ### 二、关键指标解释 #...
总之,"asy.rar_Delphi 串口通信_delphi 串口"是一个针对Delphi开发者的串口通信解决方案,可能包含一个易用的控件和相应的源代码。开发者可以借助这个资源,快速实现串口通信功能,从而在设备控制、数据采集等领域...
SY7066封装,已经批量生产,现贡献出来
四、asy_kafk_by_demo项目 这个名为`asy_kafk_by_demo`的压缩包文件,很可能是包含了一个使用Sanic和Kafka的示例项目。Kafka是一种分布式消息中间件,常用于实时数据流处理。在这个项目中,Sanic可能被用来创建一个...
2. "ASY2.mdl.txt", "ASY1.mdl.txt", "ASY4.mdl.txt", "ASY3.mdl.txt" - 这些是异步电机调速模型的文本文件,可能分别代表不同的调速策略或控制方案。通过打开和分析这些文件,可以了解具体的电路和控制算法实现。 3...
标题中的"CDC_asy_fifo.rar"表明这是一个与CDC(时钟域转换)和异步FIFO相关的工程压缩包。在数字系统设计中,时钟域转换是处理不同速度或不同同步域之间数据传输的关键技术,而异步FIFO作为其核心部分,用于存储和...
最后,Kotlin的Coroutines是近年来流行起来的异步处理框架,它提供了一种更简洁、易读的异步编程模型。Coroutines允许开发者编写类似于同步代码的异步逻辑,通过挂起函数实现非阻塞操作。在Android中,配合协程库如...