2016-11-26 67 views
0

我在java應用程序中使用彈簧狀態機。要在狀態之間移動,我們應該使用一些事件(稱爲Timer事件)。似乎有一個線程負責管理定時器的設置,以確定何時會發生狀態之間的移動(如果在我們所在的狀態下沒有任何事情發生,狀態機將根據定時器來決定)。在爲轉換添加一個定時器事件(使用Papyrus來定義狀態機)之後,即使在main方法完成後,我也會看到剩餘的活動線程。我有兩個問題;首先,這個線程是什麼(我的意思是,這個線程和管理定時器的線程是一樣的),第二,我如何在工作結束時終止線程?使用定時器時彈簧狀態機附加線程

回答

0

定時器計劃通過Spring TaskScheduler和基於註解的JavaConfig默認實例ConcurrentTaskScheduler創建。這在StateMachineCommonConfiguration

如果要修改這個你可以做提供自己TaskScheduler或者通過與其他使用機器配置的方法來設置它的名字taskScheduler覆蓋豆。默認ConcurrentTaskScheduler確實是一個基於單線程執行程序,這是你看到的。這些在Spring Framework文檔中有更多的討論。

+0

如果我使用默認的ConcurrentTaskScheduler,我將爲每個狀態機實例或一個線程安排一個線程來調度所有狀態機實例? – Amir