spring - 设置Spring任务的线程池名称

标签 spring scheduled-tasks

我有一个相当标准的 Spring 3.2 应用程序,其中包含一些任务。在我的 applicationContext.xml 中我有

<task:annotation-driven/>

我在代码中还有一些用 @Scheduled 注释的方法。我想给Spring使用的线程池起一个名字,以简化日志分析。有没有相当简单的方法来做到这一点? 谢谢。

更新:工作代码:

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <property name="corePoolSize" value="1"/>
    <property name="maxPoolSize" value="5"/>
    <property name="queueCapacity" value="100"/>
    <property name="threadNamePrefix" value="executor-task-"/>
    <property name="threadGroupName" value="executor-tasks"/>
</bean>
<bean id="taskScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
    <property name="poolSize" value="5"/>
    <property name="threadNamePrefix" value="scheduled-task-"/>
    <property name="threadGroupName" value="scheduled-tasks"/>
</bean>
<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler"/>

最佳答案

如果您希望能够指定前缀或组名称,则必须配置 TaskScheduler(对于 @Scheduled)或 TaskExecutor > (对于 @Async)你自己。如果这样做,您可以设置 threadGroupNamethreadNamePrefix 属性来自定义线程的名称。

<bean id="taskScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
    <property name="corePoolSize" value="2"/>
    <property name="maxPoolSize" value="5"/>
    <property name="queueCapacity" value="25"/>
    <property name="threadNamePrefix" value="scheduled-task"/>
    <property name="threadGroupName" value="scheduled-tasks-tg"/>
</bean>

关于spring - 设置Spring任务的线程池名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26905871/

相关文章:

java.lang.ClassNotFoundException : int on reading serialized session data 异常

java - MySQL 中的 JPA 唯一索引创建失败

每月特定时间和日期发送邮件的Python脚本

java - 在指定时间安排 Java 任务

java - Spring对普通方法的异常处理

spring - 在spring数据jpa存储库方法查询上附加自定义条件

php - 在特定时间自动安排 php 脚本执行

java - Selenium - 使用 Windows 任务计划程序与命令行

scheduled-tasks - Windows 任务计划程序 - 仅在时间窗口内运行

java - 使用 Spring JDBC API 批量执行存储过程