【问题标题】:Spring State-Machine additional thread when using timers使用计时器时的 Spring State-Machine 附加线程
【发布时间】:2016-11-26 10:48:05
【问题描述】:

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

【问题讨论】:

    标签: java spring timer spring-statemachine


    【解决方案1】:

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

    中完成的

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

    【讨论】:

    • 如果我使用默认的 ConcurrentTaskScheduler,每个状态机实例会有一个线程,还是有一个线程用于调度所有状态机实例?
    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多