为了账号安全,请及时绑定邮箱和手机立即绑定

当开发工具重新启动 Web 服务器时,计划任务不会停止

当开发工具重新启动 Web 服务器时,计划任务不会停止

泛舟湖上清波郎朗 2022-06-08 17:33:11
我有这个问题:我正在安排每 10 分钟运行一次的任务。当它运行时,我预计会收到两封来自两次检查失败的电子邮件。但是,当我编辑我的项目时,开发工具会获取更改并重新启动 spring 应用程序。但问题是:我仍然收到来自正在运行的旧应用程序的电子邮件。我该怎么做才能正确终止应用程序?恐怕这个问题也会影响到生产环境。代码:@Componentpublic class CheckRunner implements Runnable {    private static final Logger log = LoggerFactory.getLogger(CheckRunner.class);    private static boolean runOnce = true;    private final long DEFAULT_CHECKING_INITIAL = 1L;    private final long DEFAULT_CHECKING_PERIOD = 10L;    @Autowired    public EmailServiceImpl emailService;    /**     * Construct and schedule a CheckRunner      */    public CheckRunner() {        if(runOnce) {            runOnce = false;            log.info("Starting check runner.");            ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();            exec.scheduleAtFixedRate(this, DEFAULT_CHECKING_INITIAL , DEFAULT_CHECKING_PERIOD, TimeUnit.MINUTES);        }    }    /**     * Run the checks once     */    @Override    public void run() {        log.info("Checking thread running.");        checks();    }    /**     * Do the checks     */    private void checks() {        StringBuilder sb = new StringBuilder();        //sb.append("<pre>");        WebServerAvailablityCheck.runAllChecks(sb, emailService);        //sb.append("</pre>");    }}
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

如果您在 bean 上实现java.io.CloseableCheckRunner从其中调用shutdown()executor,那么 Spring 将Closeable.close()在 bean 被销毁时调用。这将导致您的执行程序线程优雅地关闭。



查看完整回答
反对 回复 2022-06-08
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号