在我的情况下,选择ThreadPoolTask​​Executor或SimpleAsyncTaskExecutor是什么?

时间:2013-08-08 15:09:34

标签: spring

我正在处理已有此代码的现有应用程序

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
      <property name="corePoolSize" value="50" />
      <property name="maxPoolSize" value="200" />
      <property name="queueCapacity" value="250" />
   </bean>

我们有一个方法,它使用上面的taskExecutor来完成一个特殊任务。 (这个任务应该完成,但可以完成asycnchronsly)

此特定任务实际上负责将100个文档插入数据库。

所以我打算使用SimpleAsyncTaskExecutor代替ThreadPoolTaskExecutor

如果这会影响效果或产生任何问题,请与我们联系

我们的应用程序是多线程的,任何时候都会有100个用户。

所以我不知道它在生产环境下的表现如何(在开发过程中可能会很好)

1 个答案:

答案 0 :(得分:1)

据我所知,SimpleAsyncTaskExecutor的使用确实有意义,如果你想执行一些长时间执行的任务,例如如果要在一天结束时压缩日志文件。在其他情况下,如果要每n秒或几分钟执行一次执行短时间的任务,则应使用ThreadPoolTask​​Executor,因为重用了系统资源。

从技术上讲,两种变体都可以使用。但是我会使用ThreadPoolTask​​Executor来完成你的任务。