Spring 使用定时器时状态机附加线程

Spring State-Machine additional thread when using timers

我在 java 应用程序中使用 spring 状态机。要在状态之间移动,我们应该使用一些事件(称为定时器事件)。似乎有一个线程负责管理定时器,该定时器设置为确定何时会发生状态之间的移动(如果我们所处的状态没有发生任何事情,状态机肯定会根据定时器做出决定)。将计时器事件添加到转换后(使用 Papyrus 定义状态机),即使在 main 方法完成后,我也会看到剩余的活动线程。我有两个问题;首先,这个线程是什么(我的意思是,这个线程与管理计时器的线程相同),其次,我如何在工作结束时终止线程?

计时器通过 Spring TaskScheduler 安排,并使用基于注释的 JavaConfig 默认实例 ConcurrentTaskScheduler 创建。这是在 StateMachineCommonConfiguration

中完成的

如果你想修改这个,你可以提供你自己的 TaskScheduler 或者通过覆盖名称为 taskScheduler 的 bean 或使用其他机器配置方法来设置它。 Default ConcurrentTaskScheduler 确实是一个基于单线程的执行器,这就是你所看到的。这些在 Spring 框架文档中有更多讨论。