2013-09-27 33 views
2

我已經看到了JAVA的很多FSM實現,​​但我不確定是否有任何「可重用」的實現。我可以重複使用的意思是什麼?線程安全的java有限狀態機(FSM)

我正在處理具有各種狀態的多個對象的狀態轉換。我想配置一個顯式自身需要無狀態和線程安全的單態狀態機,所以我可以通過所有給定的對象來並行執行其狀態轉換。

我想知道這裏有沒有適合的場景?

+1

你怎麼能有一個無狀態的狀態機?你想每個線程狀態機?我這種情況下你不需要單身。 –

+0

我需要一個可以並行處理多個對象的FSM。爲了使狀態機並行處理多個對象的轉換,它需要將每個進程的數據保持在自己的狀態之外。這就是我無意義的意思,但我同意這不是條款的最佳選擇。 – husayt

+0

我會將它建模爲每個線程的狀態機。這種狀態是線程本地或本地任務。 –

回答

2

這可能是https://stackoverflow.com/questions/10875317/recommended-fsm-finite-state-machine-library-for-java的重複,但很難確定。之前我在多線程系統中使用了SMC。

簡單的狀態機,可能適合你是使用像這樣的枚舉。

http://vanillajava.blogspot.com/2011/06/java-secret-using-enum-as-state-machine.html

再次,這是我如何從頭開始編寫它們。

+0

沒有這些是完全不同的,他們聲明「它不一定是並行能力或多線程」。 – husayt

+2

這些年來,用Java和大概知道的JLS相當好,我只是發現你可以創建匿名類的枚舉單身人士。我的意思是它並不一定比標準while循環方法更清晰,但它仍然很有趣。 – Voo

+0

@husayt你可以通過多個狀態機同時使用它們。順便說一下,我用'enum'給出的例子是無狀態的。 –