多线程异步执行问题
在我的项目的applicationContext.xml配置文件中有如下配置:
<bean id="AsynService" class="com.strongit.nj.zdjr.common.asyn4j.spring.AsynServiceFactoryBean">
<!--设置自定义相关参数-->
<property name="maxCacheWork" value="10000"></property><!--最大工作队列缓存工作数-->
<property name="addWorkWaitTime" value="2000"></property><!--当工作队列满时添加工作等待时间-->
<property name="workThreadNum" value="50"></property><!--异步工作执行线程池大小 -->
<property name="callbackThreadNum" value="100"></property><!--回调执行线程池大小-->
<property name="closeServiceWaitTime" value="2000"></property><!--服务关闭等待时间-->
<!--添加相关处理器-->
<property name="errorAsynWorkHandler"><!-- 异步工作执行异常处理器 -->
<bean class="com.strongit.nj.zdjr.common.asyn4j.core.handler.DefaultErrorAsynWorkHandler"/>
</property>
<property name="workQueueFullHandler"><!--异步工作缓冲处理器 -->
<bean class="com.strongit.nj.zdjr.common.asyn4j.core.handler.CacheAsynWorkHandler"/>
</property>
<property name="asynServiceCloseHandler"><!--服务器启动和关闭处理器 -->
<bean class="com.strongit.nj.zdjr.common.asyn4j.core.handler.FileAsynServiceHandler"/>
</property>
</bean>
这是java提供的异步方法调用的相关配置,回调类TargetBack是这样的:
public class TargetBack extends AsynCallBack {
private static final Logger logger = Logger.getLogger(TargetBack.class);
private static final long serialVersionUID = -7226571806577095229L;
private JSONArray dcArray;
public TargetBack(JSONArray dcArray) {
this.dcArray= dcArray;
}
@Override
public void doNotify() {
Boolean result = (Boolean) methodResult;
if (result) {
for(int j = 0; j < dcArray.size(); j++) {
jsonObject = dcArray.getJSONObject(j);
dcxtHelper.savedcxt(jsonObject.getString("dcName"));
}
}
}
}
我的疑问是配置文件中callbackThreadNum配置,对回调类中的doNotify方法执行起到什么作用呢?(我猜测开了很多线程所以能快速处理循环,但是问题是,每个线程都做这个循环方法?又说不通)
有知道的大神们给小弟讲解下, 知道多少讲多少,小弟不胜感激啊!--疑惑很久了,等待你们的解答!
------解决方案--------------------这个问题提的很好,楼主猜测的