定时发送邮件Java_Spring项目中,执行用户设定的定时任务(用户给某人定时发送邮件)...

Controller中如下:

@RequestMapping("sendMailAtTime")

public TMessage sendMailAtTime(Mail mail, long setTime) {

Runnable runnable = () -> {

System.out.println("定时任务开始执行");

mailService.sendMail(mail);

System.out.println("定时任务执行完毕");

};

ScheduledUtil.addTask(runnable, setTime);

return new TMessage(TMessage.CODE_SUCCESS, "设置定时任务成功:" + setTime);

}

这是ScheduledUtil

public class ScheduledUtil {

private static ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(SysConfig.MAX_POLL_SIZE);

/**

* 添加一个定时任务

*

* @param runnable 具体的任务体

* @param execTime 指定执行时间

*/

public static void addTask(Runnable runnable, long execTime) {

scheduledThreadPool.schedule(runnable, getDelaySecond(execTime) + 1, TimeUnit.SECONDS);

}

/**

* 得到与当前时间相差秒数

*/

public static long getDelaySecond(long time) {

long res = (time - System.currentTimeMillis()) / 1000;

return res > 0 ? res : 0;

}

public static void main(String[] args) {

}

}

无论怎么调试,其实都不会执行定时器的真正任务(sendMail),只会打印第一句话"定时任务开始执行",下断点也捕捉不到sendMail,不知道是为什么。

是我的思路有问题吗。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值