@Scheduled线程终止了吗?

Eri*_*rik 3 spring java-ee

我想知道如果我用@Scheduled安排一个Bean方法会发生什么,比方说,每小时,但实际上方法执行需要一个多小时.

执行会被终止吗?

sle*_*ske 6

不,没有机制可以终止你的线程.如果线程运行"太长",那就是你的问题:-).

注意:您可以使用注释@Scheduled(fixedDelay=xxx)仅在旧线程完成时启动新线程.这样可以避免多个线程并行运行的问题.但是,运行时间过长甚至悬挂的线程当然可能会导致其他问题.

如果您担心某个线程可能需要太长时间,则必须在代码中解决该问题.实际上没有其他方法 - 框架/运行时无法知道"太长"多长时间,即使它已经存在,也无法知道如何正确终止线程.当然,它可能会杀死它,但这不太可能是一个很好的解决方案(比如混乱Thread.stop()).