我想知道如果我用@Scheduled调度一个Bean方法会发生什么,比方说,每小时,但方法排除实际上需要一个多小时。
是否会终止执行?
发布于 2011-05-24 17:00:57
不,没有任何机制可以终止你的线程。如果线程运行了“太长时间”,那就是你的问题:-)。
注意:您可以使用注释@Scheduled(fixedDelay=xxx)仅在旧线程完成时启动新线程。这将避免多个线程并行运行的问题。然而,线程运行过长甚至挂起)当然仍可能导致其他问题。
如果您担心线程可能会占用太长时间,则必须在代码中解决这一问题。确实没有其他方法--框架/运行时没有办法知道多长时间是“太长”,即使它知道了,它也没有办法知道如何正确地终止你的线程。当然,这可能会扼杀它,但这不太可能是一个好的解决方案(参见:the mess about Thread.stop())。
https://stackoverflow.com/questions/6107957
复制相似问题