@Scheduled线程终止了吗?

时间:2011-05-24 08:54:19

标签: spring java-ee

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

执行会终止吗?

1 个答案:

答案 0 :(得分:6)

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

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

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