定時任務schedule(spring boot )

1. 定時任務
實現方式:
SpringBoot自帶的Scheduled,能夠將它當作一個輕量級的Quartz,並且使用起來比Quartz簡單許多,本文主要介紹。多線程

執行方式:
單線程(串行)
多線程(並行)異步

2. 建立定時任務spa

@Component
@EnableScheduling
public class ScheduledTest
{
@Scheduled(cron="0/5 * * * * ?")
public void executeFileDownLoadTask() {線程

// 間隔2分鐘,執行任務
Thread current = Thread.currentThread();
System.out.println("定時任務1:"+current.getId());
}
}get

備註:
@EnableScheduling :用於發現註解@Scheduled的任務並後臺執行;
@Scheduled(cron="0 0/2 * * * ?") :用於標註這個方法是一個定時任務的方法,有多種配置可選。cron支持cron表達式,指定任務在特定時間執行;fixedRate以特定頻率執行任務;fixedRateString以string的形式配置執行頻率。string

3. 並行任務和異步任務的配置
@Configuration
@EnableScheduling
public class ScheduleConfig implements SchedulingConfigurer, AsyncConfigurer
{it

/*
* 並行任務
*/
public void configureTasks(ScheduledTaskRegistrar taskRegistrar)
{
TaskScheduler taskScheduler = taskScheduler();
taskRegistrar.setTaskScheduler(taskScheduler);
}io

/**
* 並行任務使用策略:多線程處理
*
* @return ThreadPoolTaskScheduler 線程池
*/
@Bean(destroyMethod = "shutdown")
public ThreadPoolTaskScheduler taskScheduler()
{
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(20);
scheduler.setThreadNamePrefix("task-");
scheduler.setAwaitTerminationSeconds(60);
scheduler.setWaitForTasksToCompleteOnShutdown(true);
return scheduler;
}class

/*
* 異步任務
*/
public Executor getAsyncExecutor()
{
Executor executor = taskScheduler();
return executor;
}後臺

/*
* 異步任務 異常處理
*/
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler()
{
return new SimpleAsyncUncaughtExceptionHandler();
}
}

備註:
SchedulingConfigurer: 將線程池注入TaskScheduler,並與ScheduledTaskRegistrar 關聯;
AsyncConfigurer:用於異步處理

4. 啓動
@SpringBootApplication
public class Application
{

public static void main(String[] args)
{
SpringApplication.run(Application.class, args);

}

}

相關文章
相關標籤/搜索