在開(kāi)始討論Akka中對(duì)Actor的生命周期管理前,我們先探討一下所謂的Actor編程模式。對(duì)比起我們習(xí)慣的行令式(imperative)編程模式,Actor編程模式更接近現(xiàn)實(shí)中的應(yīng)用場(chǎng)景和功能測(cè)試模式。這是因?yàn)锳ctor是靠消息來(lái)驅(qū)動(dòng)的,每種消息代表一項(xiàng)功能的運(yùn)算指令。由于消息驅(qū)動(dòng)式的程序是松散耦合的,每項(xiàng)功能都是在獨(dú)立的線程中運(yùn)算,互不干擾依賴,所以我們可以很自然的分開(kāi)來(lái)實(shí)現(xiàn)各項(xiàng)功能以及獨(dú)立測(cè)試每項(xiàng)功能。雖然Akka同時(shí)提供了Java和Scala兩種API,但可能由于Akka本身是用Scala開(kāi)發(fā)的,所以感覺(jué)用Scala來(lái)開(kāi)發(fā)Akka程序會(huì)更自然些:籠統(tǒng)來(lái)講,Actor編程主要就是對(duì)receive函數(shù)的實(shí)現(xiàn)。而receive函數(shù)就是幾個(gè)普通的功能函數(shù)用模式匹配的方式按消息類型進(jìn)行調(diào)用。receive函數(shù)所調(diào)用的功能函數(shù)可以是任何JVM兼容語(yǔ)言函數(shù),由于每個(gè)Actor的運(yùn)算都在自己獨(dú)立的線程里進(jìn)行,所以我們不必?fù)?dān)心Actor函數(shù)在運(yùn)行中的交叉調(diào)用問(wèn)題。Akka程序本就是一種原生的多線程程序,每個(gè)Actor都在一個(gè)自己的線程內(nèi)獨(dú)立運(yùn)算它的receive函數(shù)。除此之外Actor的運(yùn)算環(huán)境可以在任何不同的JVM里,只要Akka信息發(fā)送能實(shí)現(xiàn)跨JVM投遞的話,實(shí)現(xiàn)分布式程序也是自然而然的事了。所以,理論上Akka編程初學(xué)者應(yīng)該把主要注意力放在這個(gè)receive函數(shù)的實(shí)現(xiàn)上來(lái),按照一種模版式的方式來(lái)編寫(xiě)Akka程序就可以了,如下面演示的這個(gè)模版例子:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開(kāi)發(fā)培訓(xùn)

import akka.actor._object MyActor { //在這個(gè)伴生對(duì)象里申明MyActor所支持的功能指令
  sealed trait ActorCommands  case object RunFuncA extends ActorCommands  case object RunFuncB extends ActorCommands
}//假設(shè)有funcA,funcB. 它們可以從任何JVM函數(shù)庫(kù)里調(diào)用val funcA : () => Any = ???val funcB : () => Any = ???class MyActor extends Actor {
  import MyActor._  var stateValue: Any = _    //內(nèi)部狀態(tài),代表這個(gè)Actor的當(dāng)前運(yùn)算結(jié)果
  override def receive: Receive = {    case RunFuncA => stateValue = funcA   //運(yùn)算funcA,更新stateValue
    case RunFuncB => stateValue = funcB    //運(yùn)算funcB,更新stateValue    ...
  }
}

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式