Spring延时任务使用

代码实例

@Configuration  
public class SchedulerConfig {  
  
    private static final int SCHEDULER_POOL_SIZE = 5;  
  
    private static final String SCHEDULER_THREAD_NAME_PREFIX = "scheduler-";  
  
    @Bean  
    public ThreadPoolTaskScheduler threadPoolTaskScheduler() {  
        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();  
        threadPoolTaskScheduler.setPoolSize(SCHEDULER_POOL_SIZE);  
        threadPoolTaskScheduler.setThreadNamePrefix(SCHEDULER_THREAD_NAME_PREFIX);  
        return threadPoolTaskScheduler;  
    }  
}
@Service  
@AllArgsConstructor  
public class SchedulerServiceImpl implements SchedulerService {  
  
    private final ThreadPoolTaskScheduler threadPoolTaskScheduler;  
  
    @Override  
    public void startTaskOnce(Runnable task, long delaySecond) {  
        Instant executeInstant = Instant.now().plusSeconds(delaySecond);  
        threadPoolTaskScheduler.schedule(task, executeInstant);  
    }  
}