摘要:
本節主要內容: 1. 停止actor
(1)通過actorsystem.shutdown方法停止該system下所有actor的執行
(2)通過context.stop方法停止actor的執行
(3)通過akka.actor.poisonpill訊息停止actor的執行
本節主要內容:
停止actor
(1)通過actorsystem.shutdown方法停止所有 actor的執行
/*
*停止actor:actorsystem.shutdown方法
*/ import akka.actor.actor
import akka.actor.actorsystem
import akka.actor.props
class firstactor extends actor with actorlogging
override def poststop(): unit =
} class myactor extends actor with actorlogging
override def poststop(): unit =
} val system = actorsystem("myactorsystem")
val systemlog=system.log
//建立firstactor物件
val firstactor = system.actorof(props[firstactor], name = "firstactor")
systemlog.info("準備向firstactor傳送訊息")
//向firstactor傳送訊息
firstactor!"test"
firstactor! 123
//關閉actorsystem,停止所有acotr執行
system.shutdown()}
**執行結果:
(2)通過context.stop方法停止actor的執行
/*
*停止actor:context.stop方法
*/ import akka.actor.actor
import akka.actor.actorsystem
import akka.actor.props
class firstactor extends actor with actorlogging
}override def poststop(): unit =
} class myactor extends actor with actorlogging
override def poststop(): unit =
} val system = actorsystem("myactorsystem")
val systemlog=system.log
//建立firstactor物件
val firstactor = system.actorof(props[firstactor], name = "firstactor")
systemlog.info("準備向firstactor傳送訊息")
//向firstactor傳送訊息
firstactor!"test"
firstactor! 123
firstactor!"stop"
}
**執行結果:
注意程式中並沒有使用system.shutdown方法,因此不會使得整個程式全部停止,如下圖所示
(3)通過akka.actor.poisonpill訊息停止actor的執行
/*
*停止actor:使用akka.actor.poisonpill
*/ import akka.actor.actor
import akka.actor.actorsystem
import akka.actor.props
import akka.actor.poisonpill
class firstactor extends actor with actorlogging
}override def poststop(): unit =
} class myactor extends actor with actorlogging
override def poststop(): unit =
} val system = actorsystem("myactorsystem")
val systemlog=system.log
//建立firstactor物件
val firstactor = system.actorof(props[firstactor], name = "firstactor")
systemlog.info("準備向firstactor傳送訊息")
//向firstactor傳送訊息
firstactor!"test"
firstactor! 123
firstactor!"stop"
}
**執行結果:
注意,其與第(2)中方法不同在於:不像第(2)種方法使用context.stop()。而是直接向子actor傳送表示中斷的訊息。(
akka.actor.poisonpill
)
此外,還有一種gracefulstop方法可以停止actor的執行,這部分內容等了解完future類的作用原理之後再來討論
Akka併發程式設計 5 Actor模型 五)
摘要 本將主要內容 1.訊息傳送,fire and forget訊息模型 2.訊息傳送,send and receive future訊息模型 akka提供了兩種訊息模型 fire and forget和send and receive future。fire and forget是一種單向訊息傳送...
Scala併發程式設計Demo(擴充套件Actor)
package com.zzk1 import scala.actors.actor atl enter導包 ctrl i 實現抽象方法 class actordemo extends actor case stop object test 第一步 建立actor例項 第二步 使用start啟動ac...
併發程式設計4
1 gil gil是乙個全域性直譯器鎖,是一種互斥鎖 乙個python.exe程序中只有乙份直譯器,如果職工程序開啟了多個執行緒都要執行 多執行緒之間要競爭直譯器,一旦競爭就會出現問題 gil帶來的問題是同一時間只有乙個執行緒可以訪問直譯器 好處是保證了多執行緒的資料安全 thread safe 執...