2016-11-26 71 views
0

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

回答

0

定时器计划通过Spring TaskScheduler和基于注解的JavaConfig默认实例ConcurrentTaskScheduler创建。这在StateMachineCommonConfiguration

如果要修改这个你可以做提供自己TaskScheduler或者通过与其他使用机器配置的方法来设置它的名字taskScheduler覆盖豆。默认ConcurrentTaskScheduler确实是一个基于单线程执行程序,这是你看到的。这些在Spring Framework文档中有更多的讨论。

+0

如果我使用默认的ConcurrentTaskScheduler,我将为每个状态机实例或一个线程安排一个线程来调度所有状态机实例? – Amir