scala 簡要: Actor
來源:程序員人生 發布時間:2015-01-13 08:22:06 閱讀次數:3142次
actor提供了并發程序中與傳統的基于鎖的結構不同的另外一種選擇,通過盡量避免鎖和同享狀態,actor更容易地設計出正確、沒有死鎖或爭用狀態的程序。Scala提供了actor的簡單實現,akka(http://akka.io)提供了高級actor類庫。
每一個actor都要擴大Actor類并重寫Act方法,actor是處理異步消息的對象,消息可以是任何對象,通過!操作符發送消息,例如:
actorX !“happy new year”
1個好的方式是使用樣例類作為消息,這樣,actor可使用模式匹配了。發送的消息寄存在mailbox,receive方法從mailbox中取下1條消息并處理,如果在receive方法被調用時并沒消息,則該調用會阻塞,直到有消息抵達。actor可以安全地修改它自己的數據。
向其他actor發送消息的方法:
1)使用全局的actor
2)actor可以構造成帶有指向1個或更多actor的援用
3)actor可接收帶有指向另外一個actor的援用的消息
4)actor可以返回消息給發送方
actor可以發送1個消息并等待回復,用!?操作符便可,盡可能避免同步消息。
actor的act方法在actor的start方法被調用時開始履行。接下來進入某個循環,終止條件以下:
1)act方法返回
2)act方法由于異常被終止
3)actor調用exit方法
通過link方法可以將不同的actor鏈接在1起。
actor的設計原則以下:
1)避免使用同享狀態
2)不要調用actor的方法
3)保持每一個actor簡單
4)上下文數據包括在消息中
5)最小化給發送方回復
6)最少阻塞調用
7)使用react
8)建立失敗區
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈