使用spring配置定时器

首先创建一个定时器类:

@Component("cacheTimer")
public class CacheTimer extends TimerTask {
    public static boolean isRun = false;
    @Override
    public void run() {
        // TODO Auto-generated method stub
        if(!isRun){
            isRun = true;
            System.out.println("this is run!");
            isRun = false;
        }
    }
}

然后配置applicationContext.xml文件

<bean id="cacheExecutor" class="org.springframework.scheduling.concurrent.ScheduledExecutorTask">
    <property name="runnable" ref="cacheTimer" />
    <property name="delay" value="0" />
    <property name="period" value="3600000" />
</bean>

<bean class="org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean">
    <property name="poolSize" value="1" />
    <property name="scheduledExecutorTasks">
        <list>
            <ref bean="cacheExecutor"/>
        </list>
    </property>
</bean>

这样就完成了一个定时器的配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring定时器可以使用多线程来执行定时任务,以提高执行效率。具体实现方式如下: 1. 在定时任务方法上加上 @Async 注解,表示该方法是一个异步方法,可以在另一个线程中执行。 2. 在配置类中加上 @EnableAsync 注解,启用 Spring 的异步功能。 3. 在定时任务类中,使用 TaskExecutor 或者 ThreadPoolTaskExecutor 来创建一个线程池,用来执行异步方法。 下面是一个示例代码: ```java @Component public class MyScheduler { @Autowired private TaskExecutor taskExecutor; @Async @Scheduled(cron = "0 0/1 * * * ?") public void doSomething() { taskExecutor.execute(new Runnable() { @Override public void run() { // 执行具体的定时任务代码 } }); } } @Configuration @EnableScheduling @EnableAsync public class MyConfig implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { // 创建线程池 ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(10); executor.setMaxPoolSize(100); executor.setQueueCapacity(1000); executor.setThreadNamePrefix("MyScheduler-"); executor.initialize(); return executor; } } ``` 在上面的代码中,@Async 注解表示 doSomething() 方法是一个异步方法,@Scheduled 注解表示该方法是一个定时任务方法,使用 cron 表达式指定定时任务的执行时间。在 doSomething() 方法中,使用 taskExecutor.execute() 方法来执行具体的定时任务代码,taskExecutor 是在 MyConfig 配置类中创建的线程池。通过这种方式,就可以实现 Spring 定时任务的多线程执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值