java - 如何在Spring Web Service中实现计划任务?

标签 java spring multithreading spring-mvc timertask

我正在使用Spring和Hibernate开发Java REST Web服务。我需要实现一项功能以安排将来的任务。例如,当用户在我的应用程序中注册后,我必须在前六个月内将100个虚拟积分记入他的帐户。像这样,还有一些其他相似的功能。

我在想TimerTask可以用于此功能。问题是,如果我为每个注册用户创建Timer,如果特定用户变得不 Activity ,并且好像在内存中转储线程,则我无法停止该特定用户的Timer。如果有1000位用户注册,将有1000个TimerTask线程。

如何使用Spring或Java实现这种功能?我应该对Thread拥有完全控制权,如果需要的话,我可以停止线程。

最佳答案

您可以使用单线程通过@scheduled批注和最少的XML配置执行任务,我将保留reference的链接。

您只需要在服务中创建一个方法,然后将@Scheduled注释放在

@Scheduled(cron = "0 15 10 15 * ?")
public void scheduleTaskUsingCronExpression(){
long now = System.currentTimeMillis() / 1000;
System.out.println("schedule tasks using cron jobs - " + now);
}

关于java - 如何在Spring Web Service中实现计划任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43422256/

相关文章:

JavaDocs 抛出 IllegalArgumentException

java - 由于未事先设置先前的值,嵌套循环未计算正确的金额

java - 如何使用带动态参数的 spring DI 构造函数

java多线程死锁

python - 登录异步 Tornado (python) 服务器

java - float 操作按钮滚动奇怪的行为

java - 过滤器模式定义不适用

java - @Autowire字段有空指针异常['new'关键字未使用]

java - 如何实现无限线程返回数据?

java - SpringBoot JWT安全如何