1.Actor模型

在使用Java進行并發(fā)編程時需要特別的關(guān)注鎖和內(nèi)存原子性等一系列線程問題,而Actor模型內(nèi)部的狀態(tài)由它自己維護即它內(nèi)部數(shù)據(jù)只能由它自己修改(通過消息傳遞來進行狀態(tài)修改),所以使用Actors模型進行并發(fā)編程可以很好地避免這些問題,Actor由狀態(tài)(state)、行為(Behavior)和郵箱(mailBox)三部分組成

  1. 狀態(tài)(state):Actor中的狀態(tài)指的是Actor對象的變量信息,狀態(tài)由Actor自己管理,避免了并發(fā)環(huán)境下的鎖和內(nèi)存原子性等問題

  2. 行為(Behavior):行為指定的是Actor中計算邏輯,通過Actor接收到消息來改變Actor的狀態(tài)

  3. 郵箱(mailBox):郵箱是Actor和Actor之間的通信橋梁,郵箱內(nèi)部通過FIFO消息隊列來存儲發(fā)送方Actor消息,接受方Actor從郵箱隊列中獲取消息

Actor的基礎(chǔ)就是消息傳遞

2.使用Actor模型的好處:

  1. 事件模型驅(qū)動--Actor之間的通信是異步的,即使Actor在發(fā)送消息后也無需阻塞或者等待就能夠處理其他事情

  2. 強隔離性--Actor中的方法不能由外部直接調(diào)用,所有的一切都通過消息傳遞進行的,從而避免了Actor之間的數(shù)據(jù)共享,想要
    觀察到另一個Actor的狀態(tài)變化只能通過消息傳遞進行詢問

  3. 位置透明--無論Actor地址是在本地還是在遠(yuǎn)程機上對于代碼來說都是一樣的

  4. 輕量性--Actor是非常輕量的計算單機,單個Actor僅占400多字節(jié),只需少量內(nèi)存就能達(dá)到高并發(fā)

3.Actor模型原理

以下通過學(xué)生與教師之間的郵件通信來理解akka中的Actor模型

網(wǎng)友評論