多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > Akka并發編程——第八節:Actor模型(七)

Akka并發編程——第八節:Actor模型(七)

來源:程序員人生   發布時間:2016-08-02 08:25:15 閱讀次數:2661次

本節主要內容

停止運行Typed Actor

當Typed Actor不再需要時要將其停止,有3種方法停止Typed Actor的運行:
(1)通過system.shutdown()停止ActorSystem中所有的Typed Actor;
(2)調用TypedActor(system).stop(mySquarer)停止指定的Typed Actor;
(3)調用TypedActor(system).poisonPill(otherSquarer)停止指定的Typed Actor。
具體使用代碼以下:

/* * 停止Typed Actor */ object Example_3 extends App { import akka.event.Logging import scala.concurrent.{ Promise, Future } import akka.actor.{ TypedActor, TypedProps } import scala.concurrent.duration._ trait Squarer { //fire-and-forget消息 def squareDontCare(i: Int): Unit //非阻塞send-request-reply消息 def square(i: Int): Future[Int] //阻塞式的send-request-reply消息 def squareNowPlease(i: Int): Option[Int] //阻塞式的send-request-reply消息 def squareNow(i: Int): Int } //混入PostStop和PreStart class SquarerImpl(val name: String) extends Squarer with PostStop with PreStart { import TypedActor.context val log = Logging(context.system,TypedActor.self.getClass()) def this() = this("SquarerImpl") def squareDontCare(i: Int): Unit = i * i def square(i: Int): Future[Int] = Promise.successful(i * i).future def squareNowPlease(i: Int): Option[Int] = Some(i * i) def squareNow(i: Int): Int = i * i def postStop(): Unit={ log.info ("TypedActor Stopped") } def preStart(): Unit={ log.info ("TypedActor Started") } } val system = ActorSystem("TypedActorSystem") val log = Logging(system, this.getClass) //使用默許構造函數創建Typed Actor val mySquarer: Squarer = TypedActor(system).typedActorOf(TypedProps[SquarerImpl](),"mySquarer") //使用非默許構造函數創建Typed Actor val otherSquarer: Squarer = TypedActor(system).typedActorOf(TypedProps(classOf[Squarer], new SquarerImpl("SquarerImpl")), "otherSquarer") //Request-reply-with-future 消息發送 val fSquare = mySquarer.square(10) val result = Await.result(fSquare, 5 second) log.info("fSquare="+result) //調用poisonPill方法停止Actor運行 TypedActor(system).poisonPill(otherSquarer) //調用stop方法停止Actor運行 TypedActor(system).stop(mySquarer) //system.shutdown() }

代碼運行結果以下所示。

[INFO] [03/21/2016 22:41:51.119] [TypedActorSystem-akka.actor.default-dispatcher-2] [$Proxy0(akka://TypedActorSystem)] TypedActor Started [INFO] [03/21/2016 22:41:51.123] [TypedActorSystem-akka.actor.default-dispatcher-2] [$Proxy1(akka://TypedActorSystem)] TypedActor Started [INFO] [03/21/2016 22:41:51.124] [main] [Example12_10$(akka://TypedActorSystem)] fSquare=100 [INFO] [03/21/2016 22:41:51.131] [TypedActorSystem-akka.actor.default-dispatcher-5] [$Proxy1(akka://TypedActorSystem)] TypedActor Stopped [INFO] [03/21/2016 22:41:51.131] [TypedActorSystem-akka.actor.default-dispatcher-3] [$Proxy0(akka://TypedActorSystem)] TypedActor Stopped

代碼中類SquarerImpl 混入了PreStart和PostStop兩個trait:class SquarerImpl(val name: String) extends Squarer with PostStop with PreStart,這樣的話在創建TypedActor之前和停止TypedActor后能夠進行相應的操作,本例中主要是為監視TypedActor的創建和停止進程。代碼TypedActor(system).stop(mySquarer)通過stop方法停止TypedActor,而TypedActor(system)
.poisonPill(otherSquarer)通過調用poisonPill方法停止運行TypedActor。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 最近最新中文字幕在线第一页 | 国产欧美一区二区三区在线看 | 古代的一a一片一级一片 | 午夜视频高清在线aaa | 日韩欧美在线第一页 | h在线观看视频免费网站 | 中文无码久久精品 | 男女视频免费观看 | 欧美xxxxxxxxxx黑人 | 免费看黄色的网址 | 欧洲精品一区二区三区在线观看 | 欧美色人阁 | 欧美成综合网网站 | 欧洲第一页 | 久久国产成人精品国产成人亚洲 | 在线观看亚洲成人 | 他添的我好湿好爽视频 | 日本欧美在线观看 | 亚洲精品久久久久影院 | 久久大香线蕉综合爱 | 欧美日韩永久久一区二区三区 | 中文字幕乱码视频 | 国产片在线看 | 91精品一区国产高清在线 | 国产精品66福利在线观看 | 成人亚洲精品一区 | 在线亚洲精品自拍 | 中国毛片免费观看 | 欧美18videosex | 国产乱辈通伦影片在线播放 | 国产精品国产三级国产a | 天天噜天天爽在线视频 | 秋霞理论最新三级理论最 | 国产成+人+综合+亚洲不卡 | 亚洲成人天堂网 | 国产成人资源 | 亚洲图片激情小说 | 波多野结衣在线一区二区 | 亚洲不卡在线视频 | 三浦惠理子中文字幕在线一区二区 | 欧美特级一级毛片 |