akka的介绍_Akka笔记–演员介绍
akka的介紹
過去做過多線程的任何人都不會否認管理多線程應用程序有多么艱辛和痛苦。 我說管理是因為它開始很簡單,一旦您開始看到性能改進,它就會變得非常有趣。 但是,當您發現沒有一種簡單的方法可以從子任務中的錯誤或難以發現的僵尸錯誤中恢復時,或者當您的探查器顯示您的線程花費大量時間阻塞時,它會感到疼痛在寫入共享狀態之前浪費時間。
我不想談論Java并發API及其集合如何使其變得越來越好,因為我確定如果您在這里,您可能需要對子任務進行更多控制,或者僅僅是因為您不喜歡編寫鎖和同步塊,并希望更高層次的抽象。
在本系列的Akka Notes中,我們將通過簡單的Akka示例來探索工具包中的各種功能。
什么是演員?
Akka的演員遵循演員模型 (duh!)。
像演員一樣對待演員。 不親自交談的人。 他們只是通過郵件交談。
讓我們對此進行擴展。
1.消息傳遞
考慮兩個人–一個明智的老師和學生。 學生每天早上都會向老師發送一封郵件,而明智的老師會發回明智的報價。
注意事項:
這幾乎總結了Actor模型的基本組成部分-傳遞消息。
2.并發
現在,假設有3位明智的老師和3位學生–每個學生都會向其他老師發送筆記。 那會發生什么呢? 實際上沒有任何變化。 每個人都有自己的郵箱。 這里需要注意的一個細微之處是:
默認情況下,郵箱中的郵件按照到達的順序進行讀取/處理。
在內部,默認情況下是ConcurrentLinkedQueue 。 而且由于沒有人等待郵件被提取,因此它只是一個無阻塞的消息。 (有多種內置郵箱,包括有界郵箱和基于優先級的郵箱 。實際上,我們也可以自己構建郵箱 )
3.故障轉移
想象一下,這3名老師來自歷史,地理和哲學三個部門。
歷史老師回覆過去的事件記錄,地理老師則寄給我一個有趣的地方,哲學老師則引述一段話。 每個學生向每個老師發送消息并獲得答復。 學生不在乎該部門的哪個老師將答復發回。 如果有一天老師生病怎么辦? 必須至少有一位老師來處理部門的郵件。 在這種情況下,該部門的另一位老師會加強工作。
注意事項:
4.多任務
有所不同的是,假設學生要求的話,這些老師中的每一個也都會通過郵件發送考試成績。 同樣,演員可以舒適地處理多種type的消息。
5.鏈接
如果學生只想收到一封最終的綜合瑣事郵件而不是三封怎么辦?
我們也可以通過Actors做到這一點。 我們可以將教師鏈接為一個層次結構。 稍后我們將討論主管,然后再回到有關期貨的話題上來。
根據Mohan的要求,讓我們嘗試將類比組件與Actor模型中的組件進行映射。
學生和老師成為我們的Actors 。 電子郵件收件箱將成為Mailbox組件。 請求和響應無法修改。 它們是immutable對象。 最后,Actor中的MessageDispatcher組件管理郵箱并將消息路由到相應的Mailbox 。
聊夠了,讓我們編寫一些代碼…。
翻譯自: https://www.javacodegeeks.com/2014/09/akka-notes-introducing-actors.html
akka的介紹
總結
以上是生活随笔為你收集整理的akka的介绍_Akka笔记–演员介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重装安卓系统怎么操作(重装安卓系统)
- 下一篇: ssdp攻击脚本(ssdp ddos脚本