我有ThreadPoolTaskExecutor的以下配置
<bean id="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10" />
<property name="maxPoolSize" value="25" />
<property name="queueCapacity" value="30" />
</bean>
我的公共类AdminService中有2个方法 .
-
void triggerJob();
-
boolean executeSql(String sql);
我如何将ThreadPoolTaskExecutor插入triggerJob方法,以便在第一个方法中调用executeSql时创建新线程 .
在triggerjob内部,我有基于条件调用executeSql的循环 .
我是否需要创建一个实现runnable的私有类,以便ThreadPoolTaskExecutor可以执行此类,还是可以创建没有runnable的线程?
我的想法是这样的
@Autowired
ThreadPoolTaskExecutor threadPoolTaskExecutor;
void triggerJob(){
for( Object k:Objects){
if(k.equals(something){
//here new thread to be created somehow
threadPoolTaskExecutor.execute(executeSql(k.getSql())
}
}
}
1 回答
如果你必须这样做,你可以使用
org.springframework.core.task.SimpleAsyncTaskExecutor
:但是创建Java线程很昂贵 . 通常建议重用线程,甚至SimpleAsyncTaskExecutor docs说: