我想在我的應用程序中使用akka進行多重處理。 因此,相同的代碼塊由每個actor執行,結果將由listener聚合。 所以,我的問題是在這種情況下會有任何同步問題。如果不是,它是如何被內部的阿卡行爲者處理的。使用akka同步代碼塊
0
A
回答
0
默認情況下,不應該有任何同步問題 - 如果您嚴格尊重演員的方法。這意味着演員只應該使用包含不可變對象的消息進行交流 - 並且你絕不應該直接暴露演員的內部狀態到外部世界。通過對收到的消息作出反應,使內部狀態可變/可讀。
每個actor都在自己的ExecutionContext中執行。這意味着每個演員都有自己的私人狀態。 Akka演員的設計方式是,從「外部世界」訪問這個內部狀態基本上是不可能的(或者變得非常困難),因爲在創建新的Actor之後,您只有對Actor(ActorRef實例)的中介引用,不是對內存中實際的Actor實例的引用。 Akka開發人員的意圖是這樣做的:開發人員很難獲得實際的引用並直接訪問其屬性 - 這會打破Actor的方法。
如果 - 另一方面,您將一個共享的可變對象傳遞給了一個actor,那麼您將像使用Threads一樣擁有所有的鎖和同步的麻煩。
相關問題
- 1. 同步代碼塊
- 2. 同步(...)代碼塊上使用var = Thread.currentThread()
- 3. 同步塊中的代碼
- 4. 代碼塊上的同步
- 5. 使用代碼塊一步一步執行我的代碼
- 6. 強制CLGeocoder塊代碼同步運行
- 7. 同步塊中的意外代碼
- 8. 使用的AtomicBoolean代替同步塊的
- 9. 同步代碼
- 10. 同步(this)只鎖定同步塊還是全部「this」代碼?
- 11. 對象同步方法是從代碼)不同步塊
- 12. 使用密鑰的同步訪問的代碼塊
- 13. 使用同步塊的同步隊列
- 14. 同步塊內同步塊
- 15. NetBeans代碼同步
- 16. 使同步代碼取決於異步代碼
- 17. 異常:從未同步的代碼塊調用對象同步方法
- 18. SynchronizationLockException(對象同步方法從非同步代碼塊調用。)釋放鎖時
- 19. 合同異步和同步代碼
- 20. 從Finagle的同步代碼調用異步/未來代碼
- 21. 用代碼塊設置gtk的步驟?
- 22. 跨多臺計算機同步相同的代碼塊文件
- 23. 在WinForms中使用Monitor類時出錯。對象同步方法是從非同步代碼塊中調用的
- 24. 使用不同對象的同步塊
- 25. C#中的互斥 - 來自代碼的非同步塊的同步
- 26. 使用異步操作來運行同步代碼
- 27. 同步代碼味道?
- 28. javascript中的同步代碼
- 29. 代碼合同和異步
- 30. 同步代碼更新